diff --git a/position/src/position/castle.rs b/position/src/position/castle.rs index 717cc14..cdf4900 100644 --- a/position/src/position/castle.rs +++ b/position/src/position/castle.rs @@ -69,23 +69,15 @@ impl Position { } pub(crate) fn castling_king(&self, square: Square) -> Option { - self.get_piece(square).and_then(|piece| { - if piece.color == self.board.active_color && piece.is_king() { - Some(piece) - } else { - None - } - }) + let active_color = self.board.active_color; + self.get_piece(square) + .filter(|piece| piece.color == active_color && piece.is_king()) } pub(crate) fn castling_rook(&self, square: Square) -> Option { - self.get_piece(square).and_then(|piece| { - if piece.color == self.board.active_color && piece.is_rook() { - Some(piece) - } else { - None - } - }) + let active_color = self.board.active_color; + self.get_piece(square) + .filter(|piece| piece.color == active_color && piece.is_rook()) } }