#[macro_export]
macro_rules! sq {
(A1) => {{
use $crate::squares::{File, Rank, Square};
Square(File::A, Rank::One)
}};
(A2) => {{
use $crate::squares::{File, Rank, Square};
Square(File::A, Rank::Two)
}};
(A3) => {{
use $crate::squares::{File, Rank, Square};
Square(File::A, Rank::Three)
}};
(A4) => {{
use $crate::squares::{File, Rank, Square};
Square(File::A, Rank::Four)
}};
(A5) => {{
use $crate::squares::{File, Rank, Square};
Square(File::A, Rank::Five)
}};
(A6) => {{
use $crate::squares::{File, Rank, Square};
Square(File::A, Rank::Six)
}};
(A7) => {{
use $crate::squares::{File, Rank, Square};
Square(File::A, Rank::Seven)
}};
(A8) => {{
use $crate::squares::{File, Rank, Square};
Square(File::A, Rank::Eight)
}};
(B1) => {{
use $crate::squares::{File, Rank, Square};
Square(File::B, Rank::One)
}};
(B2) => {{
use $crate::squares::{File, Rank, Square};
Square(File::B, Rank::Two)
}};
(B3) => {{
use $crate::squares::{File, Rank, Square};
Square(File::B, Rank::Three)
}};
(B4) => {{
use $crate::squares::{File, Rank, Square};
Square(File::B, Rank::Four)
}};
(B5) => {{
use $crate::squares::{File, Rank, Square};
Square(File::B, Rank::Five)
}};
(B6) => {{
use $crate::squares::{File, Rank, Square};
Square(File::B, Rank::Six)
}};
(B7) => {{
use $crate::squares::{File, Rank, Square};
Square(File::B, Rank::Seven)
}};
(B8) => {{
use $crate::squares::{File, Rank, Square};
Square(File::B, Rank::Eight)
}};
(C1) => {{
use $crate::squares::{File, Rank, Square};
Square(File::C, Rank::One)
}};
(C2) => {{
use $crate::squares::{File, Rank, Square};
Square(File::C, Rank::Two)
}};
(C3) => {{
use $crate::squares::{File, Rank, Square};
Square(File::C, Rank::Three)
}};
(C4) => {{
use $crate::squares::{File, Rank, Square};
Square(File::C, Rank::Four)
}};
(C5) => {{
use $crate::squares::{File, Rank, Square};
Square(File::C, Rank::Five)
}};
(C6) => {{
use $crate::squares::{File, Rank, Square};
Square(File::C, Rank::Six)
}};
(C7) => {{
use $crate::squares::{File, Rank, Square};
Square(File::C, Rank::Seven)
}};
(C8) => {{
use $crate::squares::{File, Rank, Square};
Square(File::C, Rank::Eight)
}};
(D1) => {{
use $crate::squares::{File, Rank, Square};
Square(File::D, Rank::One)
}};
(D2) => {{
use $crate::squares::{File, Rank, Square};
Square(File::D, Rank::Two)
}};
(D3) => {{
use $crate::squares::{File, Rank, Square};
Square(File::D, Rank::Three)
}};
(D4) => {{
use $crate::squares::{File, Rank, Square};
Square(File::D, Rank::Four)
}};
(D5) => {{
use $crate::squares::{File, Rank, Square};
Square(File::D, Rank::Five)
}};
(D6) => {{
use $crate::squares::{File, Rank, Square};
Square(File::D, Rank::Six)
}};
(D7) => {{
use $crate::squares::{File, Rank, Square};
Square(File::D, Rank::Seven)
}};
(D8) => {{
use $crate::squares::{File, Rank, Square};
Square(File::D, Rank::Eight)
}};
(E1) => {{
use $crate::squares::{File, Rank, Square};
Square(File::E, Rank::One)
}};
(E2) => {{
use $crate::squares::{File, Rank, Square};
Square(File::E, Rank::Two)
}};
(E3) => {{
use $crate::squares::{File, Rank, Square};
Square(File::E, Rank::Three)
}};
(E4) => {{
use $crate::squares::{File, Rank, Square};
Square(File::E, Rank::Four)
}};
(E5) => {{
use $crate::squares::{File, Rank, Square};
Square(File::E, Rank::Five)
}};
(E6) => {{
use $crate::squares::{File, Rank, Square};
Square(File::E, Rank::Six)
}};
(E7) => {{
use $crate::squares::{File, Rank, Square};
Square(File::E, Rank::Seven)
}};
(E8) => {{
use $crate::squares::{File, Rank, Square};
Square(File::E, Rank::Eight)
}};
(F1) => {{
use $crate::squares::{File, Rank, Square};
Square(File::F, Rank::One)
}};
(F2) => {{
use $crate::squares::{File, Rank, Square};
Square(File::F, Rank::Two)
}};
(F3) => {{
use $crate::squares::{File, Rank, Square};
Square(File::F, Rank::Three)
}};
(F4) => {{
use $crate::squares::{File, Rank, Square};
Square(File::F, Rank::Four)
}};
(F5) => {{
use $crate::squares::{File, Rank, Square};
Square(File::F, Rank::Five)
}};
(F6) => {{
use $crate::squares::{File, Rank, Square};
Square(File::F, Rank::Six)
}};
(F7) => {{
use $crate::squares::{File, Rank, Square};
Square(File::F, Rank::Seven)
}};
(F8) => {{
use $crate::squares::{File, Rank, Square};
Square(File::F, Rank::Eight)
}};
(G1) => {{
use $crate::squares::{File, Rank, Square};
Square(File::G, Rank::One)
}};
(G2) => {{
use $crate::squares::{File, Rank, Square};
Square(File::G, Rank::Two)
}};
(G3) => {{
use $crate::squares::{File, Rank, Square};
Square(File::G, Rank::Three)
}};
(G4) => {{
use $crate::squares::{File, Rank, Square};
Square(File::G, Rank::Four)
}};
(G5) => {{
use $crate::squares::{File, Rank, Square};
Square(File::G, Rank::Five)
}};
(G6) => {{
use $crate::squares::{File, Rank, Square};
Square(File::G, Rank::Six)
}};
(G7) => {{
use $crate::squares::{File, Rank, Square};
Square(File::G, Rank::Seven)
}};
(G8) => {{
use $crate::squares::{File, Rank, Square};
Square(File::G, Rank::Eight)
}};
(H1) => {{
use $crate::squares::{File, Rank, Square};
Square(File::H, Rank::One)
}};
(H2) => {{
use $crate::squares::{File, Rank, Square};
Square(File::H, Rank::Two)
}};
(H3) => {{
use $crate::squares::{File, Rank, Square};
Square(File::H, Rank::Three)
}};
(H4) => {{
use $crate::squares::{File, Rank, Square};
Square(File::H, Rank::Four)
}};
(H5) => {{
use $crate::squares::{File, Rank, Square};
Square(File::H, Rank::Five)
}};
(H6) => {{
use $crate::squares::{File, Rank, Square};
Square(File::H, Rank::Six)
}};
(H7) => {{
use $crate::squares::{File, Rank, Square};
Square(File::H, Rank::Seven)
}};
(H8) => {{
use $crate::squares::{File, Rank, Square};
Square(File::H, Rank::Eight)
}};
}
#[macro_export]
macro_rules! sqs {
( $( $x:tt ),* $(,)? ) => {
vec![
$(
sq!($x)
),*
]
};
}
#[macro_export]
macro_rules! test_move {
( $brd:expr, $m:expr, $closure:expr ) => {{
let mut test_board = $brd.to_hashing_position();
test_board.apply_legal_move($m).unwrap();
#[allow(clippy::redundant_closure_call)]
$closure(test_board)
}};
}