diff --git a/board/src/moves/pawn.rs b/board/src/moves/pawn.rs index 13650d8..23b31f1 100644 --- a/board/src/moves/pawn.rs +++ b/board/src/moves/pawn.rs @@ -18,9 +18,9 @@ struct MoveIterator(usize, usize); struct MoveGenerationParameters { starting_rank: BitBoard, promotion_rank: BitBoard, - push_shift: fn(&BitBoard) -> BitBoard, - left_capture_shift: fn(&BitBoard) -> BitBoard, - right_capture_shift: fn(&BitBoard) -> BitBoard, + push_shift: fn(BitBoard) -> BitBoard, + left_capture_shift: fn(BitBoard) -> BitBoard, + right_capture_shift: fn(BitBoard) -> BitBoard, } pub(super) struct PawnMoveGenerator<'pos> { @@ -106,7 +106,7 @@ impl<'pos> PawnMoveGenerator<'pos> { let legal_1square_pushes = (parameters.push_shift)(bb) & empty_squares; let legal_2square_pushes = - (parameters.push_shift)(&(legal_1square_pushes & BitBoard::rank(2))) & empty_squares; + (parameters.push_shift)(legal_1square_pushes & BitBoard::rank(2)) & empty_squares; self.pushes = legal_1square_pushes | legal_2square_pushes; } @@ -145,9 +145,9 @@ impl<'pos> PawnMoveGenerator<'pos> { let black_pieces = self.position.bitboard_for_color(self.color.other()); for from_sq in bb.occupied_squares() { - let pawn = BitBoard::from_square(from_sq); + let pawn: BitBoard = from_sq.into(); - let push = (parameters.push_shift)(&pawn); + let push = (parameters.push_shift)(pawn); if !(push & empty_squares).is_empty() { let to_sq = push.occupied_squares().next().unwrap(); @@ -162,7 +162,7 @@ impl<'pos> PawnMoveGenerator<'pos> { } if !(pawn & parameters.starting_rank).is_empty() { - let push = (parameters.push_shift)(&push); + let push = (parameters.push_shift)(push); if !(push & empty_squares).is_empty() { let to_sq = push.occupied_squares().next().unwrap(); self.quiet_move_list() @@ -172,8 +172,8 @@ impl<'pos> PawnMoveGenerator<'pos> { } for attack in [ - (parameters.left_capture_shift)(&pawn), - (parameters.right_capture_shift)(&pawn), + (parameters.left_capture_shift)(pawn), + (parameters.right_capture_shift)(pawn), ] { if !(attack & black_pieces).is_empty() { let to_sq = attack.occupied_squares().next().unwrap(); @@ -254,7 +254,8 @@ mod tests { #[test] fn one_2square_push() { let mut pos = Position::empty(); - pos.place_piece(&Piece::pawn(Color::White), &Square::e2()) + + pos.place_piece(Piece::pawn(Color::White), Square::E2) .expect("Failed to place pawn on e2"); let generator = PawnMoveGenerator::new(&pos, Color::White); @@ -275,7 +276,8 @@ mod tests { #[test] fn one_1square_push() { let mut pos = Position::empty(); - pos.place_piece(&Piece::pawn(Color::White), &Square::e3()) + + pos.place_piece(Piece::pawn(Color::White), Square::E3) .expect("Failed to place pawn on e3"); let generator = PawnMoveGenerator::new(&pos, Color::White); @@ -297,9 +299,10 @@ mod tests { #[test] fn one_obstructed_2square_push() { let mut pos = Position::empty(); - pos.place_piece(&Piece::pawn(Color::White), &Square::e2()) + + pos.place_piece(Piece::pawn(Color::White), Square::E2) .expect("Failed to place pawn on e2"); - pos.place_piece(&Piece::knight(Color::White), &Square::e4()) + pos.place_piece(Piece::knight(Color::White), Square::E4) .expect("Failed to place knight on e4"); println!("{}", DiagramFormatter::new(&pos)); @@ -323,9 +326,10 @@ mod tests { #[test] fn one_obstructed_1square_push() { let mut pos = Position::empty(); - pos.place_piece(&Piece::pawn(Color::White), &Square::e2()) + + pos.place_piece(Piece::pawn(Color::White), Square::E2) .expect("Failed to place pawn on e2"); - pos.place_piece(&Piece::knight(Color::White), &Square::e3()) + pos.place_piece(Piece::knight(Color::White), Square::E3) .expect("Failed to place knight on e4"); println!("{}", DiagramFormatter::new(&pos)); @@ -340,11 +344,11 @@ mod tests { #[test] fn one_attack() { let mut pos = Position::empty(); - pos.place_piece(&Piece::pawn(Color::White), &Square::e4()) + pos.place_piece(Piece::pawn(Color::White), Square::E4) .expect("Failed to place pawn on e4"); - pos.place_piece(&Piece::bishop(Color::White), &Square::e5()) + pos.place_piece(Piece::bishop(Color::White), Square::E5) .expect("Failed to place pawn on e4"); - pos.place_piece(&Piece::knight(Color::Black), &Square::d5()) + pos.place_piece(Piece::knight(Color::Black), Square::D5) .expect("Failed to place knight on d5"); println!("{}", DiagramFormatter::new(&pos)); @@ -367,13 +371,13 @@ mod tests { #[test] fn one_double_attack() { let mut pos = Position::empty(); - pos.place_piece(&Piece::pawn(Color::White), &Square::e4()) + pos.place_piece(Piece::pawn(Color::White), Square::E4) .expect("Failed to place pawn on e4"); - pos.place_piece(&Piece::bishop(Color::White), &Square::e5()) + pos.place_piece(Piece::bishop(Color::White), Square::E5) .expect("Failed to place pawn on e4"); - pos.place_piece(&Piece::knight(Color::Black), &Square::d5()) + pos.place_piece(Piece::knight(Color::Black), Square::D5) .expect("Failed to place knight on d5"); - pos.place_piece(&Piece::queen(Color::Black), &Square::f5()) + pos.place_piece(Piece::queen(Color::Black), Square::F5) .expect("Failed to place knight on f5"); println!("{}", DiagramFormatter::new(&pos));