use crate::*;
crate::helpers::simple_enum! {
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub enum File {
One,
Two,
Three,
Four,
Five,
Six,
Seven,
Eight,
Nine
}
}
crate::helpers::enum_char_conv! {
File, FileParseError {
One = '1',
Two = '2',
Three = '3',
Four = '4',
Five = '5',
Six = '6',
Seven = '7',
Eight = '8',
Nine ='9'
}
}
impl File {
#[inline(always)]
pub const fn flip(self) -> Self {
Self::index_const(Self::Nine as usize - self as usize)
}
#[inline(always)]
pub const fn bitboard(self) -> BitBoard {
BitBoard(0x1FF << (9 * (self as usize)))
}
#[inline(always)]
pub const fn west(self) -> BitBoard {
BitBoard::new(BitBoard::FULL.0 << (9 * (self as usize + 1)))
}
#[inline(always)]
pub const fn east(self) -> BitBoard {
BitBoard::new(BitBoard::FULL.0 >> (9 * (9 - self as usize)))
}
}