use crate::calendar::CalendarError;
#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub enum Day {
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,
}
impl Day {
#[inline]
pub const fn from_num(num: u8) -> Result<Self, CalendarError> {
Ok(match num {
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,
_ => return Err(CalendarError::InvalidMonthDay { received: num }),
})
}
#[inline]
pub const fn num(&self) -> u8 {
match self {
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,
}
}
#[inline]
pub const fn num_str(&self) -> &'static str {
match self {
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",
}
}
}
impl TryFrom<u8> for Day {
type Error = crate::Error;
#[inline]
fn try_from(from: u8) -> Result<Self, Self::Error> {
Ok(Self::from_num(from)?)
}
}