diff --git a/src/bitboard.rs b/src/bitboard.rs index 3ea56da..7639929 100644 --- a/src/bitboard.rs +++ b/src/bitboard.rs @@ -157,18 +157,6 @@ impl Iterator for Bitboard { (len, Some(len)) } #[inline] - fn for_each(self, mut f: F) - where - Self: Sized, - F: FnMut(Self::Item), - { - let mut mask = self.0; - while mask != 0 { - f(unsafe { Square::new_unchecked(mask.trailing_zeros() as u8) }); - mask &= mask.wrapping_sub(1); - } - } - #[inline] fn fold(self, init: B, mut f: F) -> B where Self: Sized, @@ -184,6 +172,14 @@ impl Iterator for Bitboard { } acc } + #[inline] + fn for_each(self, mut f: F) + where + Self: Sized, + F: FnMut(Self::Item), + { + self.fold((), |_, square| f(square)); + } } impl core::iter::FusedIterator for Bitboard {} impl core::iter::ExactSizeIterator for Bitboard {