diff options
| author | troido <troido@protonmail.com> | 2020-05-19 23:49:26 +0200 |
|---|---|---|
| committer | troido <troido@protonmail.com> | 2020-05-19 23:49:26 +0200 |
| commit | f98a024a06fef04fc40b29204f50d6e3a9089e10 (patch) | |
| tree | 1e65730eede1200f593ba2e4053210bab194d83a /src/fromtoparameter.rs | |
| parent | b7e3d2a51441a2c51d0cacd6f874fc8b260579e9 (diff) | |
implemented fromtoparameter for hashmap and hashset
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, |
