aboutsummaryrefslogtreecommitdiff
path: root/src/primitive/variantlist.rs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/primitive/variantlist.rs30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/primitive/variantlist.rs b/src/primitive/variantlist.rs
index b3ca720..d3518e6 100644
--- a/src/primitive/variantlist.rs
+++ b/src/primitive/variantlist.rs
@@ -45,3 +45,33 @@ impl Deserialize for VariantList {
return Ok((pos, res));
}
}
+
+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()
+ }
+}