1 use crate::ordinal::{Ordinal, OrdinalSet}; 2 use crate::time_unit::TimeUnitField; 3 use std::borrow::Cow; 4 use once_cell::sync::Lazy; 5 6 static ALL: Lazy<OrdinalSet> = Lazy::new(|| { Minutes::supported_ordinals() }); 7 8 #[derive(Clone, Debug, Eq)] 9 pub struct Minutes{ 10 ordinals: Option<OrdinalSet> 11 } 12 13 impl TimeUnitField for Minutes { from_optional_ordinal_set(ordinal_set: Option<OrdinalSet>) -> Self14 fn from_optional_ordinal_set(ordinal_set: Option<OrdinalSet>) -> Self { 15 Minutes{ 16 ordinals: ordinal_set 17 } 18 } name() -> Cow<'static, str>19 fn name() -> Cow<'static, str> { 20 Cow::from("Minutes") 21 } inclusive_min() -> Ordinal22 fn inclusive_min() -> Ordinal { 23 0 24 } inclusive_max() -> Ordinal25 fn inclusive_max() -> Ordinal { 26 59 27 } ordinals(&self) -> &OrdinalSet28 fn ordinals(&self) -> &OrdinalSet { 29 match &self.ordinals { 30 Some(ordinal_set) => &ordinal_set, 31 None => &ALL 32 } 33 } 34 } 35 36 impl PartialEq for Minutes { eq(&self, other: &Minutes) -> bool37 fn eq(&self, other: &Minutes) -> bool { 38 self.ordinals() == other.ordinals() 39 } 40 }