1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
/// Represent a chess piece as a very simple enum #[derive(PartialEq, PartialOrd, Copy, Clone)] pub enum Piece { Pawn, Knight, Bishop, Rook, Queen, King } /// How many piece types are there? pub const NUM_PIECES: usize = 6; /// An array representing each piece type, in order of ascending value. pub const ALL_PIECES: [Piece; NUM_PIECES] = [Piece::Pawn, Piece::Knight, Piece::Bishop, Piece::Rook, Piece::Queen, Piece::King]; impl Piece { /// Convert the `Piece` to a `usize` for table lookups. pub fn to_index(&self) -> usize { *self as usize } }