#[cfg(feature = "with-filters")] use chrono::Datelike; #[cfg(feature = "with-filters")] use filters::filter::Filter; #[cfg(feature = "with-filters")] use filters::filter::IntoFilter; #[cfg(feature = "with-filters")] use crate::timetype::TimeType; #[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Debug)] pub enum Day { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday, } impl From for chrono::Weekday { fn from(val: Day) -> Self { match val { Day::Monday => chrono::Weekday::Mon, Day::Tuesday => chrono::Weekday::Tue, Day::Wednesday => chrono::Weekday::Wed, Day::Thursday => chrono::Weekday::Thu, Day::Friday => chrono::Weekday::Fri, Day::Saturday => chrono::Weekday::Sat, Day::Sunday => chrono::Weekday::Sun, } } } #[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Debug)] pub enum Month { January, February, March, April, May, June, July, August, September, October, November, December, } impl From for u32 { fn from(val: Month) -> Self { match val { Month::January => 1, Month::February => 2, Month::March => 3, Month::April => 4, Month::May => 5, Month::June => 6, Month::July => 7, Month::August => 8, Month::September => 9, Month::October => 10, Month::November => 11, Month::December => 12, } } } #[cfg(feature = "with-filters")] pub struct DayFilter(Day); #[cfg(feature = "with-filters")] impl Filter for DayFilter { fn filter(&self, tt: &TimeType) -> bool { tt.get_moment() .map(|mom| mom.weekday() == self.0.clone().into()) .unwrap_or(false) } } #[cfg(feature = "with-filters")] impl IntoFilter for Day { type IntoFilt = DayFilter; fn into_filter(self) -> Self::IntoFilt { DayFilter(self) } } #[cfg(feature = "with-filters")] pub struct MonthFilter(Month); #[cfg(feature = "with-filters")] impl Filter for MonthFilter { fn filter(&self, tt: &TimeType) -> bool { tt.get_moment() .map(|mom| mom.month() == self.0.clone().into()) .unwrap_or(false) } } #[cfg(feature = "with-filters")] impl IntoFilter for Month { type IntoFilt = MonthFilter; fn into_filter(self) -> Self::IntoFilt { MonthFilter(self) } }