Skip to content

Commit e6a3127

Browse files
committed
Alternative Iterator implementation
1 parent b11ca85 commit e6a3127

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

src/lib.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -678,11 +678,13 @@ where
678678
if self.rest.is_empty() {
679679
None
680680
} else {
681-
let bits = self.rest.bits();
682-
let flag: T::Numeric = bits & bits.wrapping_neg();
683-
let flag: T = unsafe { core::mem::transmute_copy(&flag) };
684-
self.rest.remove(flag);
685-
Some(flag)
681+
unsafe {
682+
let bits = self.rest.bits();
683+
let flag: T::Numeric = bits & bits.wrapping_neg();
684+
let flag: T = core::mem::transmute_copy(&flag);
685+
self.rest = BitFlags::from_bits_unchecked(bits & (bits - BitFlagNum::ONE));
686+
Some(flag)
687+
}
686688
}
687689
}
688690

0 commit comments

Comments
 (0)