chinese_format/gregorian/date/
week_day.rs

1use super::WeekDayOutOfRange;
2
3/// The day of the week.
4///
5/// Each day can also be cast to its corresponding ordinal:
6///
7/// ```
8/// use chinese_format::{*, gregorian::*};
9///
10/// assert_eq!(WeekDay::Wednesday as u8, 3);
11/// ```
12#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
13pub enum WeekDay {
14    Sunday,
15    Monday,
16    Tuesday,
17    Wednesday,
18    Thursday,
19    Friday,
20    Saturday,
21}
22
23/// A fallible conversion from [u8] is available,
24/// provided that 0=Sunday and 6=Saturday:
25///
26/// ```
27/// use chinese_format::{*, gregorian::*};
28///
29/// # fn main() -> GenericResult<()> {
30///
31/// let day: WeekDay = 0.try_into()?;
32/// assert_eq!(day, WeekDay::Sunday);
33///
34/// let day: WeekDay = 1.try_into()?;
35/// assert_eq!(day, WeekDay::Monday);
36///
37/// let day: WeekDay = 2.try_into()?;
38/// assert_eq!(day, WeekDay::Tuesday);
39///
40/// let day: WeekDay = 3.try_into()?;
41/// assert_eq!(day, WeekDay::Wednesday);
42///
43/// let day: WeekDay = 4.try_into()?;
44/// assert_eq!(day, WeekDay::Thursday);
45///
46/// let day: WeekDay = 5.try_into()?;
47/// assert_eq!(day, WeekDay::Friday);
48///
49/// let day: WeekDay = 6.try_into()?;
50/// assert_eq!(day, WeekDay::Saturday);
51///
52/// let result: Result<WeekDay, WeekDayOutOfRange> = 7.try_into();
53/// assert_eq!(result, Err(WeekDayOutOfRange(7)));
54///
55/// # Ok(())
56/// # }
57/// ```
58impl TryFrom<u8> for WeekDay {
59    type Error = WeekDayOutOfRange;
60
61    fn try_from(value: u8) -> Result<Self, Self::Error> {
62        match value {
63            0 => Ok(Self::Sunday),
64            1 => Ok(Self::Monday),
65            2 => Ok(Self::Tuesday),
66            3 => Ok(Self::Wednesday),
67            4 => Ok(Self::Thursday),
68            5 => Ok(Self::Friday),
69            6 => Ok(Self::Saturday),
70            _ => Err(WeekDayOutOfRange(value)),
71        }
72    }
73}