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}