fast-tak 0.4.2

Implementation of the abstract strategy board game Tak
Documentation
#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
pub struct Reserves<const N: usize> {
    pub stones: u8,
    pub caps: u8,
}

impl Default for Reserves<3> {
    fn default() -> Self {
        Self {
            stones: 10,
            caps: 0,
        }
    }
}

impl Default for Reserves<4> {
    fn default() -> Self {
        Self {
            stones: 15,
            caps: 0,
        }
    }
}

impl Default for Reserves<5> {
    fn default() -> Self {
        Self {
            stones: 21,
            caps: 1,
        }
    }
}

impl Default for Reserves<6> {
    fn default() -> Self {
        Self {
            stones: 30,
            caps: 1,
        }
    }
}

impl Default for Reserves<7> {
    fn default() -> Self {
        Self {
            stones: 40,
            caps: 2,
        }
    }
}

impl Default for Reserves<8> {
    fn default() -> Self {
        Self {
            stones: 50,
            caps: 2,
        }
    }
}

impl<const N: usize> Reserves<N> {
    #[must_use]
    pub const fn depleted(self) -> bool {
        self.caps == 0 && self.stones == 0
    }
}