use std::fmt;
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
pub struct Position {
pub file: char, pub rank: u8, }
impl Position {
#[must_use]
pub fn new(file: char, rank: u8) -> Option<Self> {
if ('a'..='h').contains(&file) && (1..=8).contains(&rank) {
Some(Self { file, rank })
} else {
None
}
}
}
impl fmt::Display for Position {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{}{}", self.file, self.rank)
}
}