owlchess/
generic.rs

1use crate::types;
2
3pub trait Color {
4    const COLOR: types::Color;
5    const CASTLING_OFFSET: usize;
6    type Inv: Color;
7}
8
9pub struct White;
10pub struct Black;
11
12impl Color for White {
13    const COLOR: types::Color = types::Color::White;
14    const CASTLING_OFFSET: usize = 56;
15    type Inv = Black;
16}
17
18impl Color for Black {
19    const COLOR: types::Color = types::Color::Black;
20    const CASTLING_OFFSET: usize = 0;
21    type Inv = White;
22}