From 359ded0f603be74cd15e7314594a6cbcb0dae02b Mon Sep 17 00:00:00 2001 From: Avril Date: Fri, 11 Dec 2020 03:51:49 +0000 Subject: [PATCH] Added impl FromIterator for Map --- src/lib.rs | 14 ++++++++++++++ src/tests.rs | 8 ++++++++ 2 files changed, 22 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index 472814d..8977ae8 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -154,6 +154,20 @@ where K: Collapse } } +impl std::iter::FromIterator<(K, V)> for Map +{ + fn from_iter>(iter: I) -> Self + { + //TODO: Optimise this + let mut this = Self::new(); + for (key, value) in iter.into_iter() + { + this.insert(key, value); + } + this + } +} + impl IntoIterator for Page where K: Collapse { diff --git a/src/tests.rs b/src/tests.rs index 6b438e6..0de4229 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -23,6 +23,14 @@ fn macros() assert_eq!(map1,map2); } +#[test] +fn from_iter() +{ + let m: Map = (0..100).zip(std::iter::repeat(())).collect(); + assert_eq!(m.len(), 100); + assert_eq!((0..100).sum::(), m.into_iter().map(|x| x.0).sum::()); +} + #[test] fn is_empty() {