Refactor some clippy-pedantic errors
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
use u64 as Bitboard;
|
||||
|
||||
pub const EMPTY: Bitboard = 0x0;
|
||||
pub const FULL: Bitboard = 0xffffffffffffffff;
|
||||
pub const NOT_FILE_A: Bitboard = 0xfefefefefefefefe;
|
||||
pub const NOT_FILE_H: Bitboard = 0x7f7f7f7f7f7f7f7f;
|
||||
pub const NOT_FILE_AB: Bitboard = 0xfcfcfcfcfcfcfcfc;
|
||||
|
||||
@@ -153,7 +153,7 @@ impl Board {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn set_piece(&mut self, piece: Piece) {
|
||||
pub fn set_piece(&mut self, piece: &Piece) {
|
||||
match piece.color {
|
||||
Color::Black => self.black_pieces[piece.piece_type].bitboard |= piece.bitboard,
|
||||
Color::White => self.white_pieces[piece.piece_type].bitboard |= piece.bitboard,
|
||||
@@ -211,7 +211,7 @@ pub enum PieceType {
|
||||
}
|
||||
|
||||
impl PieceType {
|
||||
const fn idx(&self) -> usize {
|
||||
const fn idx(self) -> usize {
|
||||
match self {
|
||||
Self::Pawn => 0,
|
||||
Self::Knight => 1,
|
||||
@@ -247,7 +247,7 @@ pub enum Color {
|
||||
}
|
||||
|
||||
impl Color {
|
||||
pub const fn opponent(&self) -> Self {
|
||||
pub const fn opponent(self) -> Self {
|
||||
match self {
|
||||
Self::White => Self::Black,
|
||||
Self::Black => Self::White,
|
||||
|
||||
@@ -62,7 +62,7 @@ pub fn piece_placement(pieces: &str) -> Result<Board, FenError> {
|
||||
))
|
||||
}
|
||||
} {
|
||||
board.set_piece(Piece::new(1 << square, piece_type, color));
|
||||
board.set_piece(&Piece::new(1 << square, piece_type, color));
|
||||
file += 1;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ impl Game {
|
||||
from_fen(fen)
|
||||
}
|
||||
|
||||
pub const fn run(&self) {
|
||||
pub const fn run() {
|
||||
Board::new();
|
||||
}
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ impl History {
|
||||
}
|
||||
|
||||
pub fn push_move_parameters(&mut self, move_parameters: MoveParameters) {
|
||||
self.move_parameters.push(move_parameters)
|
||||
self.move_parameters.push(move_parameters);
|
||||
}
|
||||
|
||||
pub fn pop_move_parameters(&mut self) -> Option<MoveParameters> {
|
||||
@@ -56,7 +56,7 @@ impl MoveParameters {
|
||||
}
|
||||
|
||||
fn add_move(&mut self, mv: Move) {
|
||||
self.mv = Some(mv)
|
||||
self.mv = Some(mv);
|
||||
}
|
||||
|
||||
fn add_captured_piece(&mut self, board: &Board, dst: usize, color: Color) {
|
||||
@@ -64,13 +64,13 @@ impl MoveParameters {
|
||||
}
|
||||
|
||||
fn add_promoted_piece(&mut self, promote: Promote) {
|
||||
self.promoted_piece = Some(promote.into_piece_type())
|
||||
self.promoted_piece = Some(promote.into_piece_type());
|
||||
}
|
||||
|
||||
pub fn add_irreversible_parameters(&mut self, state: State) {
|
||||
self.castling_ability = Some(state.castling_ability);
|
||||
self.en_passant_square = state.en_passant_square;
|
||||
self.halfmove_clock = Some(state.halfmove_clock)
|
||||
self.halfmove_clock = Some(state.halfmove_clock);
|
||||
}
|
||||
|
||||
pub fn add_capture_and_promotion_piece(&mut self, board: &Board, mv: Move, color: Color) {
|
||||
@@ -107,7 +107,7 @@ mod tests {
|
||||
move_parameters.add_capture_and_promotion_piece(&game.board, mv, game.current_player());
|
||||
|
||||
game.board.make_move(&mv);
|
||||
game.board.unmake_move(move_parameters);
|
||||
game.board.unmake_move(&move_parameters);
|
||||
|
||||
assert_eq!(board_before_make, game.board);
|
||||
|
||||
@@ -118,7 +118,7 @@ mod tests {
|
||||
move_parameters.add_capture_and_promotion_piece(&game.board, mv, game.current_player());
|
||||
|
||||
game.board.make_move(&mv);
|
||||
game.board.unmake_move(move_parameters);
|
||||
game.board.unmake_move(&move_parameters);
|
||||
|
||||
assert_eq!(board_before_make, game.board);
|
||||
|
||||
@@ -137,7 +137,7 @@ mod tests {
|
||||
move_parameters.add_capture_and_promotion_piece(&game.board, mv, game.current_player());
|
||||
|
||||
game.board.make_move(&mv);
|
||||
game.board.unmake_move(move_parameters);
|
||||
game.board.unmake_move(&move_parameters);
|
||||
|
||||
assert_eq!(board_before_make, game.board);
|
||||
|
||||
@@ -148,7 +148,7 @@ mod tests {
|
||||
move_parameters.add_capture_and_promotion_piece(&game.board, mv, game.current_player());
|
||||
|
||||
game.board.make_move(&mv);
|
||||
game.board.unmake_move(move_parameters);
|
||||
game.board.unmake_move(&move_parameters);
|
||||
|
||||
assert_eq!(board_before_make, game.board);
|
||||
|
||||
@@ -163,7 +163,7 @@ mod tests {
|
||||
move_parameters.add_capture_and_promotion_piece(&game.board, mv, game.current_player());
|
||||
|
||||
game.board.make_move(&mv);
|
||||
game.board.unmake_move(move_parameters);
|
||||
game.board.unmake_move(&move_parameters);
|
||||
|
||||
assert_eq!(board_before_make, game.board);
|
||||
|
||||
@@ -184,7 +184,7 @@ mod tests {
|
||||
move_parameters.add_capture_and_promotion_piece(&game.board, mv, game.current_player());
|
||||
|
||||
game.board.make_move(&mv);
|
||||
game.board.unmake_move(move_parameters);
|
||||
game.board.unmake_move(&move_parameters);
|
||||
|
||||
assert_eq!(board_before_make, game.board);
|
||||
|
||||
@@ -203,7 +203,7 @@ mod tests {
|
||||
move_parameters.add_capture_and_promotion_piece(&game.board, mv, game.current_player());
|
||||
|
||||
game.board.make_move(&mv);
|
||||
game.board.unmake_move(move_parameters);
|
||||
game.board.unmake_move(&move_parameters);
|
||||
|
||||
assert_eq!(board_before_make, game.board);
|
||||
|
||||
|
||||
@@ -62,8 +62,9 @@ impl State {
|
||||
self.update_castling_state_capture(src, color);
|
||||
|
||||
match (src, color) {
|
||||
(4, Color::White) => self.set_castling_ability(color, Castle::None),
|
||||
(60, Color::Black) => self.set_castling_ability(color, Castle::None),
|
||||
(4, Color::White) | (60, Color::Black) => {
|
||||
self.set_castling_ability(color, Castle::None)
|
||||
}
|
||||
_ => (),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,8 +39,8 @@ pub enum Response {
|
||||
Info(String),
|
||||
}
|
||||
|
||||
fn write_response(handle_out: &mut impl Write, response: Response) -> Result<(), String> {
|
||||
writeln!(handle_out, "{}", response).map_err(|e| e.to_string())?;
|
||||
fn write_response(handle_out: &mut impl Write, response: &Response) -> Result<(), String> {
|
||||
writeln!(handle_out, "{response}").map_err(|e| e.to_string())?;
|
||||
handle_out.flush().map_err(|e| e.to_string())?;
|
||||
Ok(())
|
||||
}
|
||||
@@ -52,8 +52,8 @@ impl fmt::Display for Response {
|
||||
match self {
|
||||
Self::UciOk => write!(f, "id name ippos\nid author stefiosif\nuciok"),
|
||||
Self::ReadyOk => write!(f, "readyok"),
|
||||
Self::BestMove(best_move) => write!(f, "bestmove {}", best_move),
|
||||
Self::Info(info) => write!(f, "{}", info),
|
||||
Self::BestMove(best_move) => write!(f, "bestmove {best_move}"),
|
||||
Self::Info(info) => write!(f, "{info}"),
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -174,7 +174,7 @@ pub fn uci_loop<R: BufRead, W: Write>(input: R, mut output: W) -> Result<(), Str
|
||||
Command::Quit => break,
|
||||
};
|
||||
|
||||
write_response(&mut output, response)?;
|
||||
write_response(&mut output, &response)?;
|
||||
output.flush().map_err(|e| e.to_string())?;
|
||||
}
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ fn main() {
|
||||
Mode::Uci => {
|
||||
let input = io::stdin().lock();
|
||||
let output = io::stdout().lock();
|
||||
uci::uci_loop(input, output).unwrap_or_else(|e| println!("{}", e));
|
||||
uci::uci_loop(input, output).unwrap_or_else(|e| println!("{e}"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,7 +61,7 @@ impl fmt::Debug for Move {
|
||||
Promote::Rook => 'r',
|
||||
Promote::Queen => 'q',
|
||||
};
|
||||
write!(f, "{}", promote_char)?;
|
||||
write!(f, "{promote_char}")?;
|
||||
}
|
||||
|
||||
Ok(())
|
||||
@@ -115,7 +115,7 @@ impl Move {
|
||||
}
|
||||
|
||||
pub fn parse_into_str(&self) -> String {
|
||||
format!("{:?}", self)
|
||||
format!("{self:?}")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -156,22 +156,22 @@ impl Board {
|
||||
}
|
||||
MoveType::Promotion(promote) => {
|
||||
Self::remove_piece(mv.src, own_pieces);
|
||||
Self::promote_piece(mv.dst, own_pieces, promote);
|
||||
Self::promote_piece(mv.dst, own_pieces, *promote);
|
||||
}
|
||||
MoveType::PromotionCapture(promote) => {
|
||||
Self::remove_piece(mv.src, own_pieces);
|
||||
Self::remove_piece(mv.dst, opponent_pieces);
|
||||
Self::promote_piece(mv.dst, own_pieces, promote);
|
||||
Self::promote_piece(mv.dst, own_pieces, *promote);
|
||||
}
|
||||
MoveType::Castle => {
|
||||
Self::move_piece(mv.src, mv.dst, own_pieces);
|
||||
Self::move_rook_castle(mv.dst, own_pieces);
|
||||
self.state.set_castling_ability(color, Castle::None)
|
||||
self.state.set_castling_ability(color, Castle::None);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn unmake_move(&mut self, move_parameters: MoveParameters) {
|
||||
pub fn unmake_move(&mut self, move_parameters: &MoveParameters) {
|
||||
let color_before_move = self.state.change_side();
|
||||
self.state.revert_full_move(color_before_move);
|
||||
self.state.en_passant_square = move_parameters.en_passant_square;
|
||||
@@ -216,7 +216,7 @@ impl Board {
|
||||
Color::White => mv.dst - 8,
|
||||
Color::Black => mv.dst + 8,
|
||||
};
|
||||
opponent_pieces[PieceType::Pawn].bitboard |= square_to_bitboard(enemy_pawn_square)
|
||||
opponent_pieces[PieceType::Pawn].bitboard |= square_to_bitboard(enemy_pawn_square);
|
||||
}
|
||||
MoveType::Castle => {
|
||||
Self::move_piece(mv.dst, mv.src, own_pieces);
|
||||
@@ -260,7 +260,7 @@ impl Board {
|
||||
Self::move_piece(rook_src, rook_dst, pieces);
|
||||
}
|
||||
|
||||
fn promote_piece(square: usize, pieces: &mut [Piece; 6], promote: &Promote) {
|
||||
fn promote_piece(square: usize, pieces: &mut [Piece; 6], promote: Promote) {
|
||||
match promote {
|
||||
Promote::Knight => pieces[PieceType::Knight].bitboard |= square_to_bitboard(square),
|
||||
Promote::Bishop => pieces[PieceType::Bishop].bitboard |= square_to_bitboard(square),
|
||||
|
||||
@@ -349,7 +349,7 @@ fn king_castling_moves(board: &Board, color: Color, all_occupancies: Bitboard) -
|
||||
|
||||
let mut add_move_if_empty_path = |path_mask, king_dst| {
|
||||
if !have_common_bit(all_occupancies, path_mask) {
|
||||
moves.push(Move::new_with_type(king_src, king_dst, MoveType::Castle))
|
||||
moves.push(Move::new_with_type(king_src, king_dst, MoveType::Castle));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -362,14 +362,10 @@ fn king_castling_moves(board: &Board, color: Color, all_occupancies: Bitboard) -
|
||||
add_move_if_empty_path(path_long, king_dst_long);
|
||||
}
|
||||
|
||||
(Castle::Both, Castle::Short)
|
||||
| (Castle::Short, Castle::Short)
|
||||
| (Castle::Short, Castle::Both) => {
|
||||
(Castle::Both | Castle::Short, Castle::Short) | (Castle::Short, Castle::Both) => {
|
||||
add_move_if_empty_path(path_short, king_dst_short);
|
||||
}
|
||||
(Castle::Both, Castle::Long)
|
||||
| (Castle::Long, Castle::Long)
|
||||
| (Castle::Long, Castle::Both) => {
|
||||
(Castle::Both | Castle::Long, Castle::Long) | (Castle::Long, Castle::Both) => {
|
||||
add_move_if_empty_path(path_long, king_dst_long);
|
||||
}
|
||||
_ => (),
|
||||
|
||||
@@ -27,17 +27,17 @@ pub fn negamax(
|
||||
game.board.make_move(&mv);
|
||||
|
||||
if game.board.king_under_check(color) {
|
||||
game.board.unmake_move(move_parameters);
|
||||
game.board.unmake_move(&move_parameters);
|
||||
continue;
|
||||
}
|
||||
|
||||
legal_moves += 1;
|
||||
let move_score = -negamax(game, -beta, -alpha, depth - 1, plies + 1).1;
|
||||
game.board.unmake_move(move_parameters);
|
||||
game.board.unmake_move(&move_parameters);
|
||||
|
||||
if move_score > best_score {
|
||||
best_score = move_score;
|
||||
best_move = Some(mv)
|
||||
best_move = Some(mv);
|
||||
}
|
||||
|
||||
if move_score >= beta {
|
||||
@@ -50,9 +50,8 @@ pub fn negamax(
|
||||
if legal_moves == 0 {
|
||||
if game.board.king_under_check(color) {
|
||||
return (None, mate_score);
|
||||
} else {
|
||||
return (None, 0);
|
||||
}
|
||||
return (None, 0);
|
||||
}
|
||||
(best_move, best_score)
|
||||
}
|
||||
|
||||
@@ -27,12 +27,12 @@ pub fn quiescence(game: &mut Game, mut alpha: i32, beta: i32) -> (Option<Move>,
|
||||
game.board.make_move(&mv);
|
||||
|
||||
if game.board.king_under_check(color) {
|
||||
game.board.unmake_move(move_parameters);
|
||||
game.board.unmake_move(&move_parameters);
|
||||
continue;
|
||||
}
|
||||
|
||||
let move_score = -quiescence(game, -beta, -alpha).1;
|
||||
game.board.unmake_move(move_parameters);
|
||||
game.board.unmake_move(&move_parameters);
|
||||
|
||||
if move_score >= beta {
|
||||
return (Some(mv), beta);
|
||||
|
||||
Reference in New Issue
Block a user