use crate::prelude::*;
#[quantity]
#[ref_unit(Meter, "m", NONE, "Reference unit of quantity `Length`")]
#[unit(Nanometer, "nm", NANO, 0.000000001, "0.000000001·m")]
#[unit(Micrometer, "µm", MICRO, 0.000001, "0.000001·m")]
#[unit(Millimeter, "mm", MILLI, 0.001, "0.001·m")]
#[unit(Centimeter, "cm", CENTI, 0.01, "0.01·m")]
#[unit(Inch, "in", 0.0254, "2.54·cm")]
#[unit(Decimeter, "dm", DECI, 0.1, "0.1·m")]
#[unit(Foot, "ft", 0.3048, "12·in")]
#[unit(Yard, "yd", 0.9144, "3·ft")]
#[unit(Chain, "ch", 20.1168, "22·yd")]
#[unit(Furlong, "fur", 201.168, "10·ch")]
#[unit(Kilometer, "km", KILO, 1000, "1000·m")]
#[unit(Mile, "mi", 1609.344, "8·fur")]
#[unit(Nautical_Mile, "nmi", 1852, "1852 m")]
pub struct Length {}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_length() {
assert_eq!(<Length as HasRefUnit>::REF_UNIT, LengthUnit::REF_UNIT);
assert!(METER.is_ref_unit());
let amnt: AmountT = Amnt!(29.35);
let l = amnt * CENTIMETER;
assert_eq!(l.amount, amnt);
assert_eq!(l.unit, CENTIMETER);
#[cfg(feature = "std")]
assert_eq!(l.to_string(), "29.35 cm");
}
}