1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub enum Color {
White,
Black,
}
impl From<bool> for Color {
fn from(b: bool) -> Color {
if b {
Color::Black
} else {
Color::White
}
}
}
impl Color {
pub fn _print_row(row: &[Color]) {
print!("|");
for pixel in row {
match pixel {
Color::Black => {
print!(" ");
}
Color::White => {
print!("#");
}
}
}
println!("|");
}
pub fn _print_vec(vec: &[Color], width: usize) {
print!("+");
for _ in 0..width {
print!("-");
}
println!("+");
for row in vec.chunks(width) {
Self::_print_row(row);
}
print!("+");
for _ in 0..width {
print!("-");
}
println!("+");
}
}
impl Color {
pub fn invert(&mut self) {
match self {
Color::White => {
*self = Color::Black;
}
Color::Black => {
*self = Color::White;
}
}
}
}