diff --git a/src/interval.rs b/src/interval.rs index 3f0d459..871cea3 100644 --- a/src/interval.rs +++ b/src/interval.rs @@ -44,21 +44,21 @@ impl Unit fn multiplier(&self) -> u64 { use lazy_static::lazy_static; use std::collections::HashMap; + - use Unit::*; - lazy_static! { - static ref MUL_TABLE: HashMap = { - let mut map = HashMap::with_capacity(8); - map.insert(Second, 1000); - map.insert(Minute, Second.multiplier() * 60); - map.insert(Hour, Minute.multiplier() * 60); - map.insert(Day, Hour.multiplier() * 24); - map.insert(Week, Day.multiplier() * 7); - map.insert(Year, Week.multiplier() * 52); - map.insert(Aeon, Year.multiplier() * 1000000); - map - }; + fn calc_table(&self) -> { + use Unit::*; + match self { + Second => 1000, + Minute => Second.multiplier() * 60, + Hour => Minute.multiplier() * 60, + Day => Hour.multiplier() * 24, + Week => Day.multiplier() * 7, + Year => Week.multiplier() * 52, + Aeon => Year.multiplier() * 1000000, + } } + *MUL_TABLE.get(&self).unwrap() } } diff --git a/src/sys/mod.rs b/src/sys/mod.rs new file mode 100644 index 0000000..c5d584a --- /dev/null +++ b/src/sys/mod.rs @@ -0,0 +1,2 @@ +use super::*; +