diff --git a/board/src/piece.rs b/board/src/piece.rs index bddb65a..e048075 100644 --- a/board/src/piece.rs +++ b/board/src/piece.rs @@ -1,12 +1,20 @@ // Eryn Wells -#[derive(Clone, Copy, Debug, Eq, PartialEq)] +use crate::square::Square; + +#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)] pub enum Color { White = 0, Black = 1, } -#[derive(Clone, Copy, Debug, Eq, PartialEq)] +impl Color { + pub fn iter() -> impl Iterator { + [Color::White, Color::Black].into_iter() + } +} + +#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)] pub enum Shape { Pawn = 0, Knight = 1, @@ -16,12 +24,26 @@ pub enum Shape { King = 5, } +impl Shape { + pub fn iter() -> impl Iterator { + [ + Shape::Pawn, + Shape::Knight, + Shape::Bishop, + Shape::Rook, + Shape::Queen, + Shape::King, + ] + .into_iter() + } +} + #[derive(Debug, Eq, PartialEq)] pub enum PiecePlacementError { PieceExistsOnSquare, } -#[derive(Debug, Eq, PartialEq)] +#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)] pub struct Piece { pub color: Color, pub shape: Shape, diff --git a/board/src/square.rs b/board/src/square.rs index b96d4a6..37ac6ea 100644 --- a/board/src/square.rs +++ b/board/src/square.rs @@ -9,7 +9,7 @@ pub struct ParseSquareError; #[derive(Debug)] pub struct SquareOutOfBoundsError; -#[derive(Debug, Eq, PartialEq)] +#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)] pub struct Square { pub rank: u8, pub file: u8,