1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
pub mod length { use metron_core::def_unit; def_unit! { pub Thou { from(Inch =* 1000.), from(Feet =* 12000.), sym("th"), } } def_unit! { pub Inch { from(Thou =/ 1000.), sym("in"), } } def_unit! { pub Feet { from(Thou =/ 12000.), from(Inch =/ 12.), sym("ft"), } } def_unit! { pub Yard { from(Feet =/ 3.), sym("ft"), } } def_unit! { pub Chain { from(Yard =/ 22.), sym("ch"), } } def_unit! { pub Furlong { from(Chain =/ 10.), sym("fur"), } } def_unit! { pub Mile { from(Furlong =/ 8.), sym("mi"), } } def_unit! { pub League { from(Mile =/ 3.), sym("lea"), } } #[cfg(test)] mod test { use metron_core::Measure; #[test] fn thou2feet() { type Thou = Measure<f32, super::Thou>; type Feet = Measure<f32, super::Feet>; assert_eq!(Feet::new(1.), Feet::from_unit(Thou::new(12000.))) } } }