From 797c54e83b8c9c4bfd05a61f870c0eceb32dc472 Mon Sep 17 00:00:00 2001 From: Pavel Lutskov Date: Thu, 20 Feb 2025 21:07:55 +0100 Subject: [PATCH] Purge ALL_VALUES from rank/file enums --- rs/src/board.rs | 63 ++++++++++++++++++++++--------------------------- 1 file changed, 28 insertions(+), 35 deletions(-) diff --git a/rs/src/board.rs b/rs/src/board.rs index 1f2740d..8c5be38 100644 --- a/rs/src/board.rs +++ b/rs/src/board.rs @@ -87,7 +87,6 @@ where Self: Sized, Self: Clone, { - const ALL_VALUES: [Self; 8]; fn incr(&self) -> Option; fn decr(&self) -> Option; fn delta(&self, direction: &Direction) -> Option { @@ -100,16 +99,6 @@ where } impl GridAxis for Rank { - const ALL_VALUES: [Rank; 8] = [ - Rank::_1, - Rank::_2, - Rank::_3, - Rank::_4, - Rank::_5, - Rank::_6, - Rank::_7, - Rank::_8, - ]; fn incr(&self) -> Option { match self { Rank::_1 => Some(Rank::_2), @@ -137,16 +126,6 @@ impl GridAxis for Rank { } impl GridAxis for File { - const ALL_VALUES: [File; 8] = [ - File::A, - File::B, - File::C, - File::D, - File::E, - File::F, - File::G, - File::H, - ]; fn incr(&self) -> Option { match self { File::A => Some(File::B), @@ -180,21 +159,35 @@ pub enum PieceType { impl PieceType { fn initial_setup(&self) -> Vec<(Piece, Position)> { + fn pawn(color: Color, file: File) -> (Piece, Position) { + let pos = Position::new(file, color.get_pawn_rank()); + ( + Piece { + piece_type: PieceType::Pawn, + color, + }, + pos, + ) + } match &self { - PieceType::Pawn => [Color::Black, Color::White] - .iter() - .flat_map(|color| { - File::ALL_VALUES.iter().map(|&file| { - ( - Piece { - piece_type: self.clone(), - color: color.clone(), - }, - Position::new(file, color.get_pawn_rank()), - ) - }) - }) - .collect(), + PieceType::Pawn => vec![ + pawn(Color::White, File::A), + pawn(Color::White, File::B), + pawn(Color::White, File::C), + pawn(Color::White, File::D), + pawn(Color::White, File::E), + pawn(Color::White, File::F), + pawn(Color::White, File::G), + pawn(Color::White, File::H), + pawn(Color::Black, File::A), + pawn(Color::Black, File::B), + pawn(Color::Black, File::C), + pawn(Color::Black, File::D), + pawn(Color::Black, File::E), + pawn(Color::Black, File::F), + pawn(Color::Black, File::G), + pawn(Color::Black, File::H), + ], } } }