[board] Change the type of BitScanner.shift form u32 to usize
This commit is contained in:
parent
1cc8b4520f
commit
adc2f76e00
1 changed files with 8 additions and 6 deletions
|
@ -2,7 +2,7 @@
|
|||
|
||||
pub(crate) struct BitScanner {
|
||||
bits: u64,
|
||||
shift: u32,
|
||||
shift: usize,
|
||||
}
|
||||
|
||||
impl BitScanner {
|
||||
|
@ -12,22 +12,24 @@ impl BitScanner {
|
|||
}
|
||||
|
||||
impl Iterator for BitScanner {
|
||||
type Item = u32;
|
||||
type Item = usize;
|
||||
|
||||
fn next(&mut self) -> Option<Self::Item> {
|
||||
if self.shift == u64::BITS {
|
||||
let u64bits = u64::BITS as usize;
|
||||
|
||||
if self.shift == u64bits {
|
||||
return None;
|
||||
}
|
||||
|
||||
let shifted_bits = self.bits << self.shift;
|
||||
let leading_zeros = shifted_bits.leading_zeros();
|
||||
let leading_zeros = shifted_bits.leading_zeros() as usize;
|
||||
|
||||
if leading_zeros == u64::BITS {
|
||||
if leading_zeros == u64bits {
|
||||
self.shift = leading_zeros;
|
||||
return None;
|
||||
}
|
||||
|
||||
let position = u64::BITS - (self.shift + leading_zeros + 1);
|
||||
let position = u64bits - (self.shift + leading_zeros + 1);
|
||||
// Shift 1 additional place to account for the 1 that `leading_zeros` found.
|
||||
self.shift += leading_zeros + 1;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue