From f98a024a06fef04fc40b29204f50d6e3a9089e10 Mon Sep 17 00:00:00 2001 From: troido Date: Tue, 19 May 2020 23:49:26 +0200 Subject: implemented fromtoparameter for hashmap and hashset --- src/componentwrapper.rs | 21 +-------------------- src/fromtoparameter.rs | 29 ++++++++++++++++++++++++++++- 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/src/componentwrapper.rs b/src/componentwrapper.rs index c5d95c5..2619d9c 100644 --- a/src/componentwrapper.rs +++ b/src/componentwrapper.rs @@ -216,26 +216,7 @@ components!(all: }; Ear () {Ear::default()}; Build (obj: Template); - Whitelist ( - allowed: Vec<(String, Vec)>, ({ - Whitelist.allowed.iter().map(|(item, players)| - (item.clone(), players.iter().map(|playerid| playerid.name.clone()).collect()) - ).collect() - }) - ) { - Whitelist { - allowed: allowed - .into_iter() - .map(|(item, names)| ( - item, - names - .into_iter() - .map(|name| PlayerId{name}) - .collect::>() - )) - .collect() - } - }; + Whitelist (allowed: HashMap>); Dedup (id: String, priority: i64); Minable (trigger: String, total: i64) { Minable { 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 FromToParameter for HashSet +where + T: FromToParameter + Eq + Hash, +{ + fn from_parameter(p: Parameter) -> Option{ + Some(>::from_parameter(p)?.into_iter().collect()) + } + fn to_parameter(self) -> Parameter { + self.into_iter().collect::>().to_parameter() + } +} + +impl FromToParameter for HashMap +where + T: FromToParameter + Eq + Hash, + U: FromToParameter, +{ + fn from_parameter(p: Parameter) -> Option{ + Some(>::from_parameter(p)?.into_iter().collect()) + } + fn to_parameter(self) -> Parameter { + self.into_iter().collect::>().to_parameter() + } +} + + impl FromToParameter for (T, U) where T: FromToParameter, -- cgit