diff options
| author | Max Audron <audron@cocaine.farm> | 2023-12-20 13:13:00 +0100 |
|---|---|---|
| committer | Max Audron <audron@cocaine.farm> | 2023-12-20 13:13:00 +0100 |
| commit | e6980211c4c53fc1eeb686cd12363a8fa603daa3 (patch) | |
| tree | 2c248fc32d258dea722dbbefd7ab5465954e2ebc /src/primitive/variantlist.rs | |
| parent | use VariantMap as target for generic NetworkMap for HashMap impl (diff) | |
rework Network derives to be more consistent
i don't even know anymore, blame past me
Diffstat (limited to 'src/primitive/variantlist.rs')
| -rw-r--r-- | src/primitive/variantlist.rs | 30 |
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() + } +} |
