From 30188d478e6ee08cd2635bda61f88cec3f832051 Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Sat, 13 Jul 2024 12:03:19 -0700 Subject: [PATCH] [board] Convert &BitBoard to BitBoard for several Board methods I don't think passing by reference buys much for BitBoard. So simplify the logic and borrowing semantics to make these easier to work with. --- board/src/board.rs | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/board/src/board.rs b/board/src/board.rs index 15ae1e1..b1df95c 100644 --- a/board/src/board.rs +++ b/board/src/board.rs @@ -111,23 +111,26 @@ impl Board { /// A [`BitBoard`] representing the set of squares containing a piece. This /// set is the inverse of [`Board::empty_squares`]. #[must_use] - pub fn occupied_squares(&self) -> &BitBoard { + pub fn occupied_squares(&self) -> BitBoard { self.pieces.all_pieces() } #[must_use] - pub fn friendly_pieces(&self) -> &BitBoard { + pub fn friendly_pieces_bitboard(&self) -> BitBoard { self.pieces.all_pieces_of_color(self.player_to_move) } #[must_use] - pub fn opposing_pieces(&self) -> &BitBoard { + pub fn opposing_pieces_bitboard(&self) -> BitBoard { self.pieces.all_pieces_of_color(self.player_to_move.other()) } #[must_use] - pub fn all_pieces(&self) -> (&BitBoard, &BitBoard) { - (self.friendly_pieces(), self.opposing_pieces()) + pub fn all_pieces(&self) -> (BitBoard, BitBoard) { + ( + self.friendly_pieces_bitboard(), + self.opposing_pieces_bitboard(), + ) } /// A [BitBoard] representing the set of squares containing a piece. This @@ -166,8 +169,8 @@ impl Board { self.en_passant } - fn king_bitboard(&self, player: Color) -> &BitBoard { - self.pieces.bitboard_for_piece(&Piece::king(player)) + fn king_bitboard(&self, player: Color) -> BitBoard { + self.pieces.bitboard_for_piece(Piece::king(player)) } pub(crate) fn king_square(&self, player: Color) -> Square { @@ -183,13 +186,13 @@ impl Board { } #[must_use] - pub fn bitboard_for_color(&self, color: Color) -> &BitBoard { + pub fn bitboard_for_color(&self, color: Color) -> BitBoard { self.pieces.bitboard_for_color(color) } #[must_use] - pub fn bitboard_for_piece(&self, piece: Piece) -> &BitBoard { - self.pieces.bitboard_for_piece(&piece) + pub fn bitboard_for_piece(&self, piece: Piece) -> BitBoard { + self.pieces.bitboard_for_piece(piece) } }