35 lines
619 B
Rust
35 lines
619 B
Rust
use std::{
|
|
fmt::{self, Display, Formatter}, hash::Hash
|
|
};
|
|
|
|
#[derive(Hash, PartialEq, Eq, Debug, Clone, Copy)]
|
|
pub enum Cell {
|
|
Alive,
|
|
Dead,
|
|
}
|
|
|
|
impl From<u8> for Cell {
|
|
fn from(b: u8) -> Self {
|
|
match b {
|
|
b'.' => Cell::Dead,
|
|
b'#' => Cell::Alive,
|
|
_ => unreachable!(),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl Display for Cell {
|
|
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
|
|
f.write_str(match self {
|
|
Cell::Alive => ".",
|
|
Cell::Dead => "#",
|
|
})
|
|
}
|
|
}
|
|
|
|
impl Default for Cell {
|
|
fn default() -> Self {
|
|
Cell::Dead
|
|
}
|
|
}
|