three_style_lib/facelet/
types.rs

1use self::Facelet as F;
2use std::fmt;
3
4#[rustfmt::skip]
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
6pub enum Facelet {
7    U0, U1, U2, U3, U4, U5, U6, U7, U8,
8    R0, R1, R2, R3, R4, R5, R6, R7, R8,
9    F0, F1, F2, F3, F4, F5, F6, F7, F8,
10    D0, D1, D2, D3, D4, D5, D6, D7, D8,
11    L0, L1, L2, L3, L4, L5, L6, L7, L8,
12    B0, B1, B2, B3, B4, B5, B6, B7, B8,
13}
14
15impl Facelet {
16    pub fn as_color(&self) -> Color {
17        match self {
18            F::U0 | F::U1 | F::U2 | F::U3 | F::U4 | F::U5 | F::U6 | F::U7 | F::U8 => Color::U,
19            F::R0 | F::R1 | F::R2 | F::R3 | F::R4 | F::R5 | F::R6 | F::R7 | F::R8 => Color::R,
20            F::F0 | F::F1 | F::F2 | F::F3 | F::F4 | F::F5 | F::F6 | F::F7 | F::F8 => Color::F,
21            F::D0 | F::D1 | F::D2 | F::D3 | F::D4 | F::D5 | F::D6 | F::D7 | F::D8 => Color::D,
22            F::L0 | F::L1 | F::L2 | F::L3 | F::L4 | F::L5 | F::L6 | F::L7 | F::L8 => Color::L,
23            F::B0 | F::B1 | F::B2 | F::B3 | F::B4 | F::B5 | F::B6 | F::B7 | F::B8 => Color::B,
24        }
25    }
26}
27
28impl fmt::Display for Facelet {
29    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
30        write!(f, "{:?}", self)
31    }
32}
33
34pub trait FaceletTarget {
35    fn to_facelets(&self) -> Vec<Facelet>;
36
37    fn as_facelet(&self) -> Facelet {
38        self.to_facelets()[0]
39    }
40}
41
42pub type FaceletState = [Facelet; 54];
43
44#[rustfmt::skip]
45pub const DEFAULT_STATE: FaceletState = [
46    F::U0, F::U1, F::U2, F::U3, F::U4, F::U5, F::U6, F::U7, F::U8,
47    F::R0, F::R1, F::R2, F::R3, F::R4, F::R5, F::R6, F::R7, F::R8,
48    F::F0, F::F1, F::F2, F::F3, F::F4, F::F5, F::F6, F::F7, F::F8,
49    F::D0, F::D1, F::D2, F::D3, F::D4, F::D5, F::D6, F::D7, F::D8,
50    F::L0, F::L1, F::L2, F::L3, F::L4, F::L5, F::L6, F::L7, F::L8,
51    F::B0, F::B1, F::B2, F::B3, F::B4, F::B5, F::B6, F::B7, F::B8,
52];
53
54#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
55pub enum Color {
56    U,
57    R,
58    F,
59    D,
60    L,
61    B,
62}
63
64impl fmt::Display for Color {
65    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
66        write!(f, "{:?}", self)
67    }
68}