summaryrefslogtreecommitdiff
path: root/src/fromtoparameter.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/fromtoparameter.rs')
-rw-r--r--src/fromtoparameter.rs29
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,