diff options
Diffstat (limited to 'src/primitive')
| -rw-r--r-- | src/primitive/bufferid.rs | 16 | ||||
| -rw-r--r-- | src/primitive/variantlist.rs | 30 |
2 files changed, 16 insertions, 30 deletions
diff --git a/src/primitive/bufferid.rs b/src/primitive/bufferid.rs index e987d85..59e1ace 100644 --- a/src/primitive/bufferid.rs +++ b/src/primitive/bufferid.rs @@ -2,10 +2,13 @@ #[repr(transparent)] pub struct BufferId(pub i32); +use crate::message::NetworkList; use crate::{error::ProtocolError, serialize::*}; use crate::serialize::UserType; +use super::Variant; + impl Serialize for BufferId { fn serialize(&self) -> Result<Vec<u8>, ProtocolError> { let mut res = Vec::new(); @@ -42,6 +45,19 @@ impl UserType for BufferId { const NAME: &str = "BufferId"; } +// TODO this is not correct usage, it's technically not really network repr were converting from +// but just the conversion of VariantList -> Self directly +impl NetworkList for Vec<BufferId> { + fn to_network_list(&self) -> super::VariantList { + self.iter().map(|b| Variant::BufferId(*b)).collect() + } + + fn from_network_list(input: &mut super::VariantList) -> Self { + input.iter().map(|b| match_variant!(b, Variant::BufferId)).collect() + } +} + + #[cfg(test)] mod tests { use super::*; diff --git a/src/primitive/variantlist.rs b/src/primitive/variantlist.rs index 0f0f4e0..20913ff 100644 --- a/src/primitive/variantlist.rs +++ b/src/primitive/variantlist.rs @@ -50,33 +50,3 @@ impl Deserialize for VariantList { impl VariantType for VariantList { const TYPE: u32 = crate::primitive::QVARIANTLIST; } - -impl<S> crate::message::NetworkMap for Vec<S> -where - S: std::convert::TryFrom<Variant> + Into<Variant> + Clone + std::hash::Hash + std::cmp::Eq, - <S as TryFrom<Variant>>::Error: std::fmt::Debug, -{ - type Item = VariantList; - - fn to_network_map(&self) -> VariantList { - self.iter().map(|i| i.clone().into()).collect() - } - - fn from_network_map(input: &mut VariantList) -> Self { - input.iter().map(|i| i.clone().try_into().unwrap()).collect() - } -} - -impl<S> crate::message::NetworkList for Vec<S> -where - S: std::convert::TryFrom<Variant> + Into<Variant> + Clone + std::hash::Hash + std::cmp::Eq, - <S as TryFrom<Variant>>::Error: std::fmt::Debug, -{ - fn to_network_list(&self) -> VariantList { - self.iter().map(|i| i.clone().into()).collect() - } - - fn from_network_list(input: &mut VariantList) -> Self { - input.iter().map(|i| i.clone().try_into().unwrap()).collect() - } -} |
