#[cfg(test)]
mod test_day_of_week;
use std::convert::Infallible;
use crate::{schema, warning::IntoCaveat as _, FromSchema};
#[derive(Copy, Debug, PartialEq, Eq, Ord, PartialOrd, Clone, Hash)]
pub(crate) enum Weekday {
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday,
}
impl FromSchema<'_, schema::v211::DayOfWeek> for Weekday {
type Warning = Infallible;
fn from_schema(source: &schema::v211::DayOfWeek) -> crate::Verdict<Self, Self::Warning> {
use schema::v211::DayOfWeek;
let v = match source {
DayOfWeek::Monday => Self::Monday,
DayOfWeek::Tuesday => Self::Tuesday,
DayOfWeek::Wednesday => Self::Wednesday,
DayOfWeek::Thursday => Self::Thursday,
DayOfWeek::Friday => Self::Friday,
DayOfWeek::Saturday => Self::Saturday,
DayOfWeek::Sunday => Self::Sunday,
};
Ok(v.into_infallible_caveat())
}
}
impl FromSchema<'_, schema::v221::DayOfWeek> for Weekday {
type Warning = Infallible;
fn from_schema(source: &schema::v221::DayOfWeek) -> crate::Verdict<Self, Self::Warning> {
use schema::v221::DayOfWeek;
let v = match source {
DayOfWeek::Monday => Self::Monday,
DayOfWeek::Tuesday => Self::Tuesday,
DayOfWeek::Wednesday => Self::Wednesday,
DayOfWeek::Thursday => Self::Thursday,
DayOfWeek::Friday => Self::Friday,
DayOfWeek::Saturday => Self::Saturday,
DayOfWeek::Sunday => Self::Sunday,
};
Ok(v.into_infallible_caveat())
}
}
impl From<chrono::Weekday> for Weekday {
fn from(value: chrono::Weekday) -> Self {
match value {
chrono::Weekday::Mon => Weekday::Monday,
chrono::Weekday::Tue => Weekday::Tuesday,
chrono::Weekday::Wed => Weekday::Wednesday,
chrono::Weekday::Thu => Weekday::Thursday,
chrono::Weekday::Fri => Weekday::Friday,
chrono::Weekday::Sat => Weekday::Saturday,
chrono::Weekday::Sun => Weekday::Sunday,
}
}
}
impl From<Weekday> for usize {
fn from(value: Weekday) -> Self {
match value {
Weekday::Monday => 0,
Weekday::Tuesday => 1,
Weekday::Wednesday => 2,
Weekday::Thursday => 3,
Weekday::Friday => 4,
Weekday::Saturday => 5,
Weekday::Sunday => 6,
}
}
}
impl From<Weekday> for chrono::Weekday {
fn from(day: Weekday) -> Self {
match day {
Weekday::Monday => Self::Mon,
Weekday::Tuesday => Self::Tue,
Weekday::Wednesday => Self::Wed,
Weekday::Thursday => Self::Thu,
Weekday::Friday => Self::Fri,
Weekday::Saturday => Self::Sat,
Weekday::Sunday => Self::Sun,
}
}
}