diff --git a/board/src/move_generator/bishop.rs b/board/src/move_generator/bishop.rs index d740c21..48fd833 100644 --- a/board/src/move_generator/bishop.rs +++ b/board/src/move_generator/bishop.rs @@ -7,7 +7,7 @@ use chessfriend_core::{Color, Direction, Piece, PlacedPiece}; move_generator_declaration!(ClassicalMoveGenerator); -impl<'pos> MoveGeneratorInternal for ClassicalMoveGenerator<'pos> { +impl MoveGeneratorInternal for ClassicalMoveGenerator { fn piece(color: Color) -> Piece { Piece::bishop(color) } @@ -60,7 +60,7 @@ mod tests { use super::*; use crate::{position, position::DiagramFormatter}; use chessfriend_bitboard::BitBoard; - use chessfriend_core::{piece, Color}; + use chessfriend_core::Color; #[test] fn classical_single_bishop_bitboard() { diff --git a/board/src/move_generator/king.rs b/board/src/move_generator/king.rs index f401de9..1d0dda2 100644 --- a/board/src/move_generator/king.rs +++ b/board/src/move_generator/king.rs @@ -4,7 +4,7 @@ //! generating the possible moves for the king in the given position. use super::{move_generator_declaration, MoveGeneratorInternal, MoveSet}; -use crate::{ r#move::Castle, Move, MoveBuilder, Position}; +use crate::{r#move::Castle, Move, MoveBuilder, Position}; use chessfriend_bitboard::BitBoard; use chessfriend_core::{Color, Piece, PlacedPiece}; @@ -12,7 +12,7 @@ move_generator_declaration!(KingMoveGenerator, struct); move_generator_declaration!(KingMoveGenerator, new); move_generator_declaration!(KingMoveGenerator, getters); -impl<'a> KingMoveGenerator<'a> { +impl KingMoveGenerator { #[allow(unused_variables)] fn king_side_castle(position: &Position, color: Color) -> Option { if !position.player_has_right_to_castle(color, Castle::KingSide) { @@ -34,7 +34,7 @@ impl<'a> KingMoveGenerator<'a> { } } -impl<'pos> MoveGeneratorInternal for KingMoveGenerator<'pos> { +impl MoveGeneratorInternal for KingMoveGenerator { fn piece(color: Color) -> Piece { Piece::king(color) } diff --git a/board/src/move_generator/knight.rs b/board/src/move_generator/knight.rs index f334b64..751217a 100644 --- a/board/src/move_generator/knight.rs +++ b/board/src/move_generator/knight.rs @@ -7,7 +7,7 @@ use chessfriend_core::{Color, Piece, PlacedPiece}; move_generator_declaration!(KnightMoveGenerator); -impl<'pos> MoveGeneratorInternal for KnightMoveGenerator<'pos> { +impl MoveGeneratorInternal for KnightMoveGenerator { fn piece(color: Color) -> Piece { Piece::knight(color) } diff --git a/board/src/move_generator/mod.rs b/board/src/move_generator/mod.rs index 730d8b2..b15d2f9 100644 --- a/board/src/move_generator/mod.rs +++ b/board/src/move_generator/mod.rs @@ -29,9 +29,8 @@ macro_rules! move_generator_declaration { move_generator_declaration!($name, getters); }; ($name:ident, struct) => { - #[derive(Clone, Debug)] - pub(super) struct $name<'pos> { - position: &'pos $crate::Position, + #[derive(Clone, Debug, Eq, PartialEq)] + pub(super) struct $name { color: chessfriend_core::Color, move_sets: std::collections::BTreeMap< chessfriend_core::Square, @@ -40,13 +39,12 @@ macro_rules! move_generator_declaration { } }; ($name:ident, new) => { - impl<'pos> $name<'pos> { + impl $name { pub(super) fn new( position: &$crate::Position, color: chessfriend_core::Color, ) -> $name { $name { - position, color, move_sets: Self::move_sets(position, color), } @@ -54,7 +52,7 @@ macro_rules! move_generator_declaration { } }; ($name:ident, getters) => { - impl<'pos> $name<'pos> { + impl $name { pub(super) fn iter(&self) -> impl Iterator + '_ { self.move_sets.values().map(|set| set.moves()).flatten() } diff --git a/board/src/move_generator/move_generator.rs b/board/src/move_generator/move_generator.rs index 4647b72..35292a1 100644 --- a/board/src/move_generator/move_generator.rs +++ b/board/src/move_generator/move_generator.rs @@ -9,17 +9,17 @@ use super::{ use crate::{Move, Position}; use chessfriend_core::{Color, PlacedPiece, Shape}; -#[derive(Clone, Debug)] -pub struct Moves<'pos> { - pawn_moves: PawnMoveGenerator<'pos>, - knight_moves: KnightMoveGenerator<'pos>, - bishop_moves: BishopMoveGenerator<'pos>, - rook_moves: RookMoveGenerator<'pos>, - queen_moves: QueenMoveGenerator<'pos>, - king_moves: KingMoveGenerator<'pos>, +#[derive(Clone, Debug, Eq, PartialEq)] +pub struct Moves { + pawn_moves: PawnMoveGenerator, + knight_moves: KnightMoveGenerator, + bishop_moves: BishopMoveGenerator, + rook_moves: RookMoveGenerator, + queen_moves: QueenMoveGenerator, + king_moves: KingMoveGenerator, } -impl<'a> Moves<'a> { +impl Moves { pub fn new(position: &Position, color: Color) -> Moves { Moves { pawn_moves: PawnMoveGenerator::new(position, color), diff --git a/board/src/move_generator/pawn.rs b/board/src/move_generator/pawn.rs index 61b2246..860c564 100644 --- a/board/src/move_generator/pawn.rs +++ b/board/src/move_generator/pawn.rs @@ -24,7 +24,7 @@ struct MoveGenerationParameters { move_generator_declaration!(PawnMoveGenerator); -impl<'pos> MoveGeneratorInternal for PawnMoveGenerator<'pos> { +impl MoveGeneratorInternal for PawnMoveGenerator { fn piece(color: Color) -> Piece { Piece::pawn(color) } @@ -54,7 +54,7 @@ impl<'pos> MoveGeneratorInternal for PawnMoveGenerator<'pos> { } } -impl<'pos> PawnMoveGenerator<'pos> { +impl PawnMoveGenerator { fn move_generation_parameters(color: Color) -> MoveGenerationParameters { match color { Color::White => MoveGenerationParameters { diff --git a/board/src/move_generator/queen.rs b/board/src/move_generator/queen.rs index e2c90ad..f38da4a 100644 --- a/board/src/move_generator/queen.rs +++ b/board/src/move_generator/queen.rs @@ -7,7 +7,7 @@ use chessfriend_core::{Color, Direction, Piece, PlacedPiece}; move_generator_declaration!(ClassicalMoveGenerator); -impl<'pos> MoveGeneratorInternal for ClassicalMoveGenerator<'pos> { +impl MoveGeneratorInternal for ClassicalMoveGenerator { fn piece(color: Color) -> Piece { Piece::queen(color) } @@ -66,7 +66,7 @@ mod tests { use super::*; use crate::{position, position::DiagramFormatter}; use chessfriend_bitboard::{bitboard, BitBoard}; - use chessfriend_core::{piece, Color}; + use chessfriend_core::Color; #[test] fn classical_single_queen_bitboard() { diff --git a/board/src/move_generator/rook.rs b/board/src/move_generator/rook.rs index 8cee244..dae6daa 100644 --- a/board/src/move_generator/rook.rs +++ b/board/src/move_generator/rook.rs @@ -1,13 +1,13 @@ // Eryn Wells use super::{move_generator_declaration, MoveGeneratorInternal, MoveSet}; -use crate::{ MoveBuilder, Position}; +use crate::{MoveBuilder, Position}; use chessfriend_bitboard::BitBoard; use chessfriend_core::{Color, Direction, Piece, PlacedPiece}; move_generator_declaration!(ClassicalMoveGenerator); -impl<'pos> MoveGeneratorInternal for ClassicalMoveGenerator<'pos> { +impl MoveGeneratorInternal for ClassicalMoveGenerator { fn piece(color: Color) -> Piece { Piece::rook(color) } diff --git a/board/src/position/position.rs b/board/src/position/position.rs index 4cb6c6e..326371f 100644 --- a/board/src/position/position.rs +++ b/board/src/position/position.rs @@ -20,7 +20,6 @@ pub struct Position { en_passant_square: Option, sight: [OnceCell; 2], moves: OnceCell, - half_move_counter: u16, full_move_number: u16, }