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 }