diff --git a/src/lib.rs b/src/lib.rs index 3f19045..4156b04 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -253,10 +253,14 @@ impl<'a> ops::Sub<&'a BitSet> for &'a BitSet { fn sub(self, rhs: &'a BitSet) -> BitSet { let mut set = self.clone(); - for (key, value) in &rhs.blocks { - let block = set.blocks.entry(*key).or_insert(0); + for (key, block) in &mut set.blocks { + if let Some(value) = rhs.blocks.get(&key) { + // let n = block.count_ones(); - *block &= !value; + *block &= !value; + + // set.nbits += (block.count_ones() - n) as usize; + } } set.nbits = set.blocks.values().map(|block| block.count_ones()).sum::() as usize;