use crate::{ error::FendError, result::FResult, serialize::{Deserialize, Serialize}, }; use std::{fmt, io}; #[derive(Clone, Copy, PartialEq, Eq)] pub(crate) enum DayOfWeek { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, } impl fmt::Debug for DayOfWeek { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { let s = match self { Self::Sunday => "Sunday", Self::Monday => "Monday", Self::Tuesday => "Tuesday", Self::Wednesday => "Wednesday", Self::Thursday => "Thursday", Self::Friday => "Friday", Self::Saturday => "Saturday", }; write!(f, "{s}") } } impl DayOfWeek { pub(crate) fn as_u8(self) -> u8 { match self { Self::Sunday => 0, Self::Monday => 1, Self::Tuesday => 2, Self::Wednesday => 3, Self::Thursday => 4, Self::Friday => 5, Self::Saturday => 6, } } pub(crate) fn serialize(self, write: &mut impl io::Write) -> FResult<()> { self.as_u8().serialize(write)?; Ok(()) } pub(crate) fn deserialize(read: &mut impl io::Read) -> FResult { Ok(match u8::deserialize(read)? { 0 => Self::Sunday, 1 => Self::Monday, 2 => Self::Tuesday, 3 => Self::Wednesday, 4 => Self::Thursday, 5 => Self::Friday, 6 => Self::Saturday, _ => return Err(FendError::DeserializationError), }) } } impl fmt::Display for DayOfWeek { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { write!(f, "{self:?}") } }