Move: bit madness
This commit is contained in:
@@ -46,6 +46,16 @@ pub enum Winner {
|
||||
None,
|
||||
}
|
||||
|
||||
impl Winner {
|
||||
pub const fn raw(self) -> u8 {
|
||||
unsafe { std::mem::transmute(self) }
|
||||
}
|
||||
|
||||
pub const fn from_raw(value: u8) -> Self {
|
||||
unsafe { std::mem::transmute(value) }
|
||||
}
|
||||
}
|
||||
|
||||
macro_rules! get_board {
|
||||
// Immutable static access
|
||||
($self:expr, Piece::White) => {
|
||||
@@ -539,4 +549,17 @@ mod test {
|
||||
|
||||
assert_eq!(board.get((6, 0).into()), Some(Piece::Black), "\n{}", board);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn winner_repr() {
|
||||
assert_eq!(Winner::Player(Piece::Black).raw(), 0b00);
|
||||
assert_eq!(Winner::Player(Piece::White).raw(), 0b01);
|
||||
assert_eq!(Winner::Tie.raw(), 0b10);
|
||||
assert_eq!(Winner::None.raw(), 0b11);
|
||||
|
||||
assert_eq!(Winner::from_raw(0b00), Winner::Player(Piece::Black));
|
||||
assert_eq!(Winner::from_raw(0b01), Winner::Player(Piece::White));
|
||||
assert_eq!(Winner::from_raw(0b10), Winner::Tie);
|
||||
assert_eq!(Winner::from_raw(0b11), Winner::None);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user