diff --git a/board/src/bitboard/bit_scanner.rs b/board/src/bitboard/bit_scanner.rs index e345591..257a13a 100644 --- a/board/src/bitboard/bit_scanner.rs +++ b/board/src/bitboard/bit_scanner.rs @@ -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 { - 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;