summaryrefslogtreecommitdiffstats
path: root/src/common
diff options
context:
space:
mode:
authorPaul Masurel <paul.masurel@gmail.com>2018-02-22 10:43:06 +0900
committerPaul Masurel <paul.masurel@gmail.com>2018-02-22 10:43:06 +0900
commitc3fbc4c8fad942cd2c587220b0d9b731ebfaede6 (patch)
tree3df488338e9c06b735900bd8e1b3e499947b3f2b /src/common
parent4ee2db25a0b640be638da642a359126b3a5f1780 (diff)
Simplified a notch TinySet::pop_lowest()
Diffstat (limited to 'src/common')
-rw-r--r--src/common/bitset.rs20
1 files changed, 5 insertions, 15 deletions
diff --git a/src/common/bitset.rs b/src/common/bitset.rs
index c0edea2..0842859 100644
--- a/src/common/bitset.rs
+++ b/src/common/bitset.rs
@@ -84,23 +84,12 @@ impl TinySet {
/// and removes it.
#[inline(always)]
pub fn pop_lowest(&mut self) -> Option<u32> {
- if let Some(lowest) = self.lowest() {
- self.0 ^= TinySet::singleton(lowest).0;
- Some(lowest)
- } else {
- None
- }
- }
-
- /// Returns the lowest element in the `TinySet`
- /// (or None if the set is empty).
- #[inline(always)]
- pub fn lowest(&mut self) -> Option<u32> {
if self.is_empty() {
None
} else {
- let least_significant_bit = self.0.trailing_zeros() as u32;
- Some(least_significant_bit)
+ let lowest = self.0.trailing_zeros() as u32;
+ self.0 ^= TinySet::singleton(lowest).0;
+ Some(lowest)
}
}
@@ -366,7 +355,7 @@ mod tests {
#[bench]
fn bench_tinyset_pop(b: &mut test::Bencher) {
- b.iter(|| test::black_box(TinySet::singleton(31u32)).pop_lowest());
+ b.iter(|| test::black_box(TinySet(321u64)).pop_lowest());
}
#[bench]
@@ -387,4 +376,5 @@ mod tests {
fn bench_bitset_initialize(b: &mut test::Bencher) {
b.iter(|| BitSet::with_max_value(1_000_000));
}
+
}