chess_engine/
square.rs

1use super::Piece;
2
3/// Essentially a container for a single piece on a board.
4#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord)]
5pub struct Square {
6    piece: Option<Piece>,
7}
8
9/// A square containing no piece
10pub const EMPTY_SQUARE: Square = Square { piece: None };
11
12impl From<Piece> for Square {
13    fn from(piece: Piece) -> Self {
14        Self { piece: Some(piece) }
15    }
16}
17
18impl Square {
19    /// Does this square contain a piece?
20    #[inline]
21    pub fn is_empty(&self) -> bool {
22        self.piece == None
23    }
24
25    /// Get the piece contained in this square.
26    #[inline]
27    pub fn get_piece(&self) -> Option<Piece> {
28        self.piece
29    }
30}