diff --git a/board/src/lib.rs b/board/src/lib.rs index 969bd6f..8fd104a 100644 --- a/board/src/lib.rs +++ b/board/src/lib.rs @@ -4,8 +4,9 @@ mod bitboard; mod display; mod r#move; -mod move_generator; #[macro_use] +mod macros; +mod move_generator; pub mod piece; #[macro_use] pub mod position; diff --git a/board/src/macros.rs b/board/src/macros.rs new file mode 100644 index 0000000..0b88d0f --- /dev/null +++ b/board/src/macros.rs @@ -0,0 +1,20 @@ +// Eryn Wells + +#[macro_export] +macro_rules! piece { + ($color:ident $shape:ident) => { + $crate::piece::Piece::new($crate::piece::Color::$color, $crate::piece::Shape::$shape) + }; + ($color:ident $shape:ident on $square:ident) => { + $crate::piece::PlacedPiece::new(piece!($color $shape), $crate::square::Square::$square) + } +} + +#[macro_export] +macro_rules! position { + [$($color:ident $shape:ident on $square:ident),* $(,)?] => { + $crate::PositionBuilder::new() + $(.place_piece(piece!($color $shape on $square)))* + .build() + }; +} diff --git a/board/src/piece.rs b/board/src/piece.rs index e3614f4..0b72234 100644 --- a/board/src/piece.rs +++ b/board/src/piece.rs @@ -121,16 +121,6 @@ pub enum PiecePlacementError { ExistsOnSquare, } -#[macro_export] -macro_rules! piece { - ($color:ident $shape:ident) => { - $crate::piece::Piece::new($crate::piece::Color::$color, $crate::piece::Shape::$shape) - }; - ($color:ident $shape:ident on $square:ident) => { - $crate::piece::PlacedPiece::new(piece!($color $shape), $crate::square::Square::$square) - } -} - #[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)] pub struct Piece { color: Color, diff --git a/board/src/position/mod.rs b/board/src/position/mod.rs index 6899faa..650959d 100644 --- a/board/src/position/mod.rs +++ b/board/src/position/mod.rs @@ -3,7 +3,6 @@ mod diagram_formatter; mod flags; mod pieces; -#[macro_use] mod position; pub use diagram_formatter::DiagramFormatter; diff --git a/board/src/position/position.rs b/board/src/position/position.rs index d45fd1d..13e9ffa 100644 --- a/board/src/position/position.rs +++ b/board/src/position/position.rs @@ -18,15 +18,6 @@ pub(crate) enum BoardSide { Queen, } -#[macro_export] -macro_rules! position { - [$($color:ident $shape:ident on $square:ident,)*] => { - $crate::Position::from_iter([ - $($crate::piece!($color $shape on $square)),* - ].into_iter()) - }; -} - #[derive(Clone, Eq, PartialEq)] pub struct Position { color_to_move: Color,