"syn 1.0.69",
]
+[[package]]
+name = "derive-into-owned"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "576fce04d31d592013a5887ba8d9c3830adff329e5096d7e1eb5e8e61262ca62"
+dependencies = [
+ "quote 0.3.15",
+ "syn 0.11.11",
+]
+
[[package]]
name = "derive_more"
version = "0.99.13"
"chrono",
"chrono-tz",
"delegate",
+ "derive-into-owned",
"digest 0.9.0",
"downcast-rs",
"either",
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
+[[package]]
+name = "quote"
+version = "0.3.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a"
+
[[package]]
name = "quote"
version = "0.6.13"
"siphasher 0.2.3",
]
+[[package]]
+name = "syn"
+version = "0.11.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad"
+dependencies = [
+ "quote 0.3.15",
+ "synom",
+ "unicode-xid 0.0.4",
+]
+
[[package]]
name = "syn"
version = "0.15.44"
"unicode-xid 0.2.1",
]
+[[package]]
+name = "synom"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6"
+dependencies = [
+ "unicode-xid 0.0.4",
+]
+
[[package]]
name = "synstructure"
version = "0.12.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3"
+[[package]]
+name = "unicode-xid"
+version = "0.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc"
+
[[package]]
name = "unicode-xid"
version = "0.1.0"
chrono="0.4"
chrono-tz="0.5"
delegate="0.5"
+derive-into-owned="0.1"
digest="0.9"
downcast-rs="1"
either="1"
#[derive(Debug,Serialize,Deserialize)]
pub enum MgmtResponse {
Fine,
- Progress(ProgressInfo),
+ Progress(ProgressInfo<'static>),
Error { error: MgmtError },
AlterGame { error: Option<MgmtError>, responses: Vec<MgmtGameResponse> },
AccountsList(Vec<Arc<AccountName>>),
#[throws(MgmtChannelWriteError)]
- pub fn progress(&mut self, pi: ProgressInfo) {
- let resp = crate::commands::MgmtResponse::Progress(pi);
+ pub fn progress(&mut self, pi: ProgressInfo<'_>) {
+ let resp = crate::commands::MgmtResponse::Progress(pi.into_owned());
rmp_serde::encode::write_named(&mut self.f, &resp)?;
}
}
pub use byteorder::{BigEndian, LittleEndian, ReadBytesExt, WriteBytesExt};
pub use cast_trait_object::{dyn_upcast, DynCastExt};
pub use delegate::delegate;
+pub use derive_into_owned::IntoOwned;
pub use derive_more::*;
pub use digest::Digest;
pub use downcast_rs::{impl_downcast, Downcast};
use crate::prelude::*;
use crate::packetframe::ResponseWriter;
-#[derive(Debug,Clone,Serialize,Deserialize)]
-pub struct ProgressInfo {
+#[derive(Debug,Clone,Serialize,Deserialize,IntoOwned)]
+pub struct ProgressInfo<'pi> {
phase_num: usize,
phases: usize,
- phase_desc: String,
+ phase_desc: Cow<'pi, str>,
count: usize,
of: usize,
- desc: String,
+ desc: Cow<'pi, str>,
}
pub trait ProgressReporter {
+ fn report(&mut self, info: ProgressInfo<'_>)
+ -> Result<(), MgmtChannelWriteError>;
}
impl<W> ProgressReporter for ResponseWriter<'_, W> where W: Write {
+ #[throws(MgmtChannelWriteError)]
+ fn report(&mut self, pi: ProgressInfo<'_>) {
+ self.progress(pi)?
+ }
}
impl ProgressReporter for () {
+ #[throws(MgmtChannelWriteError)]
+ fn report(&mut self, _pi: ProgressInfo<'_>) { }
}