diff options
Diffstat (limited to 'src/fromtoparameter.rs')
| -rw-r--r-- | src/fromtoparameter.rs | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/src/fromtoparameter.rs b/src/fromtoparameter.rs index 4abfdfd..f201a2a 100644 --- a/src/fromtoparameter.rs +++ b/src/fromtoparameter.rs @@ -1,5 +1,6 @@ - +use std::collections::{HashSet, HashMap}; +use std::hash::Hash; use crate::{ parameter::Parameter, Template, @@ -107,6 +108,32 @@ where } } +impl<T> FromToParameter for HashSet<T> +where + T: FromToParameter + Eq + Hash, +{ + fn from_parameter(p: Parameter) -> Option<Self>{ + Some(<Vec<T>>::from_parameter(p)?.into_iter().collect()) + } + fn to_parameter(self) -> Parameter { + self.into_iter().collect::<Vec<T>>().to_parameter() + } +} + +impl<T, U> FromToParameter for HashMap<T, U> +where + T: FromToParameter + Eq + Hash, + U: FromToParameter, +{ + fn from_parameter(p: Parameter) -> Option<Self>{ + Some(<Vec<(T, U)>>::from_parameter(p)?.into_iter().collect()) + } + fn to_parameter(self) -> Parameter { + self.into_iter().collect::<Vec<(T, U)>>().to_parameter() + } +} + + impl<T, U> FromToParameter for (T, U) where T: FromToParameter, |
