diff --git a/src/compiler/rust/bitset.rs b/src/compiler/rust/bitset.rs index 5050f74abf2..21238200475 100644 --- a/src/compiler/rust/bitset.rs +++ b/src/compiler/rust/bitset.rs @@ -151,6 +151,19 @@ impl Default for BitSet { } } +impl FromIterator for BitSet { + fn from_iter(iter: T) -> Self + where + T: IntoIterator, + { + let mut res = BitSet::new(); + for i in iter { + res.insert(i); + } + res + } +} + impl BitAndAssign for BitSet { fn bitand_assign(&mut self, rhs: BitSet) { self.reserve_words(rhs.words.len()); @@ -298,4 +311,11 @@ mod tests { set2.clear(); assert!(set2.is_empty()); } + + #[test] + fn test_from_iter() { + let vec = vec![0, 1, 99]; + let set: BitSet = vec.clone().into_iter().collect(); + assert_eq!(to_vec(&set), vec); + } }