use crate::calendar::CalendarError;
#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub enum Minute {
N0,
N1,
N2,
N3,
N4,
N5,
N6,
N7,
N8,
N9,
N10,
N11,
N12,
N13,
N14,
N15,
N16,
N17,
N18,
N19,
N20,
N21,
N22,
N23,
N24,
N25,
N26,
N27,
N28,
N29,
N30,
N31,
N32,
N33,
N34,
N35,
N36,
N37,
N38,
N39,
N40,
N41,
N42,
N43,
N44,
N45,
N46,
N47,
N48,
N49,
N50,
N51,
N52,
N53,
N54,
N55,
N56,
N57,
N58,
N59,
}
impl Minute {
#[inline]
pub const fn from_num(num: u8) -> Result<Self, CalendarError> {
Ok(match num {
0 => Self::N0,
1 => Self::N1,
2 => Self::N2,
3 => Self::N3,
4 => Self::N4,
5 => Self::N5,
6 => Self::N6,
7 => Self::N7,
8 => Self::N8,
9 => Self::N9,
10 => Self::N10,
11 => Self::N11,
12 => Self::N12,
13 => Self::N13,
14 => Self::N14,
15 => Self::N15,
16 => Self::N16,
17 => Self::N17,
18 => Self::N18,
19 => Self::N19,
20 => Self::N20,
21 => Self::N21,
22 => Self::N22,
23 => Self::N23,
24 => Self::N24,
25 => Self::N25,
26 => Self::N26,
27 => Self::N27,
28 => Self::N28,
29 => Self::N29,
30 => Self::N30,
31 => Self::N31,
32 => Self::N32,
33 => Self::N33,
34 => Self::N34,
35 => Self::N35,
36 => Self::N36,
37 => Self::N37,
38 => Self::N38,
39 => Self::N39,
40 => Self::N40,
41 => Self::N41,
42 => Self::N42,
43 => Self::N43,
44 => Self::N44,
45 => Self::N45,
46 => Self::N46,
47 => Self::N47,
48 => Self::N48,
49 => Self::N49,
50 => Self::N50,
51 => Self::N51,
52 => Self::N52,
53 => Self::N53,
54 => Self::N54,
55 => Self::N55,
56 => Self::N56,
57 => Self::N57,
58 => Self::N58,
59 => Self::N59,
_ => return Err(CalendarError::InvalidMinute { received: num }),
})
}
#[inline]
pub const fn num(&self) -> u8 {
match self {
Self::N0 => 0,
Self::N1 => 1,
Self::N2 => 2,
Self::N3 => 3,
Self::N4 => 4,
Self::N5 => 5,
Self::N6 => 6,
Self::N7 => 7,
Self::N8 => 8,
Self::N9 => 9,
Self::N10 => 10,
Self::N11 => 11,
Self::N12 => 12,
Self::N13 => 13,
Self::N14 => 14,
Self::N15 => 15,
Self::N16 => 16,
Self::N17 => 17,
Self::N18 => 18,
Self::N19 => 19,
Self::N20 => 20,
Self::N21 => 21,
Self::N22 => 22,
Self::N23 => 23,
Self::N24 => 24,
Self::N25 => 25,
Self::N26 => 26,
Self::N27 => 27,
Self::N28 => 28,
Self::N29 => 29,
Self::N30 => 30,
Self::N31 => 31,
Self::N32 => 32,
Self::N33 => 33,
Self::N34 => 34,
Self::N35 => 35,
Self::N36 => 36,
Self::N37 => 37,
Self::N38 => 38,
Self::N39 => 39,
Self::N40 => 40,
Self::N41 => 41,
Self::N42 => 42,
Self::N43 => 43,
Self::N44 => 44,
Self::N45 => 45,
Self::N46 => 46,
Self::N47 => 47,
Self::N48 => 48,
Self::N49 => 49,
Self::N50 => 50,
Self::N51 => 51,
Self::N52 => 52,
Self::N53 => 53,
Self::N54 => 54,
Self::N55 => 55,
Self::N56 => 56,
Self::N57 => 57,
Self::N58 => 58,
Self::N59 => 59,
}
}
#[inline]
pub const fn num_str(&self) -> &'static str {
match self {
Self::N0 => "00",
Self::N1 => "01",
Self::N2 => "02",
Self::N3 => "03",
Self::N4 => "04",
Self::N5 => "05",
Self::N6 => "06",
Self::N7 => "07",
Self::N8 => "08",
Self::N9 => "09",
Self::N10 => "10",
Self::N11 => "11",
Self::N12 => "12",
Self::N13 => "13",
Self::N14 => "14",
Self::N15 => "15",
Self::N16 => "16",
Self::N17 => "17",
Self::N18 => "18",
Self::N19 => "19",
Self::N20 => "20",
Self::N21 => "21",
Self::N22 => "22",
Self::N23 => "23",
Self::N24 => "24",
Self::N25 => "25",
Self::N26 => "26",
Self::N27 => "27",
Self::N28 => "28",
Self::N29 => "29",
Self::N30 => "30",
Self::N31 => "31",
Self::N32 => "32",
Self::N33 => "33",
Self::N34 => "34",
Self::N35 => "35",
Self::N36 => "36",
Self::N37 => "37",
Self::N38 => "38",
Self::N39 => "39",
Self::N40 => "40",
Self::N41 => "41",
Self::N42 => "42",
Self::N43 => "43",
Self::N44 => "44",
Self::N45 => "45",
Self::N46 => "46",
Self::N47 => "47",
Self::N48 => "48",
Self::N49 => "49",
Self::N50 => "50",
Self::N51 => "51",
Self::N52 => "52",
Self::N53 => "53",
Self::N54 => "54",
Self::N55 => "55",
Self::N56 => "56",
Self::N57 => "57",
Self::N58 => "58",
Self::N59 => "59",
}
}
}
impl TryFrom<u8> for Minute {
type Error = crate::Error;
#[inline]
fn try_from(from: u8) -> Result<Self, Self::Error> {
Ok(Self::from_num(from)?)
}
}