uom/si/
linear_number_density.rs

1//! Linear number density (base unit 1 per meter, m⁻¹).
2
3quantity! {
4    /// Linear number density (base unit 1 per meter, m⁻¹).
5    quantity: LinearNumberDensity; "linear number density";
6    /// Dimension of linear number density, L⁻¹ (base 1 unit per meter, m⁻¹).
7    dimension: ISQ<
8        N1,     // length
9        Z0,     // mass
10        Z0,     // time
11        Z0,     // electric current
12        Z0,     // thermodynamic temperature
13        Z0,     // amount of substance
14        Z0>;    // luminous intensity
15    kind: dyn (crate::si::marker::ConstituentConcentrationKind);
16    units {
17        @per_kilometer: prefix!(none) / prefix!(kilo); "km⁻¹", "per kilometer", "per kilometer";
18        @per_meter: prefix!(none); "m⁻¹", "per meter", "per meter";
19        @per_decimeter: prefix!(none) / prefix!(deci); "dm⁻¹", "per decimeter", "per decimeter";
20        @per_centimeter: prefix!(none) / prefix!(centi); "cm⁻¹", "per centimeter", "per centimeter";
21        @per_millimeter: prefix!(none) / prefix!(milli); "mm⁻¹", "per millimeter", "per millimeter";
22
23        @per_foot: prefix!(none) / 3.048_E-1; "ft⁻¹", "per foot", "per foot";
24        @per_foot_survey: prefix!(none) / 3.048_006_E-1; "ft (U.S. survey)", "foot (U.S. survey)",
25            "foot (U.S. survey)";
26        @per_inch: prefix!(none) / 2.54_E-2; "in⁻¹", "per inch", "per inch";
27        @per_mile: prefix!(none) / 1.609_344_E3; "mi⁻¹", "per mile", "per mile";
28        @per_mile_survey: prefix!(none) / 1.609_347_E3; "mi⁻¹ (U.S. survey)",
29            "per mile (U.S. survey)", "per mile (U.S. survey)";
30        @per_nautical_mile: prefix!(none) / 1.852_E3; "M⁻¹", "per nautical mile",
31            "per nautical mile";
32        @per_yard: prefix!(none) / 9.144_E-1; "yd⁻¹", "per yard", "per yard";
33    }
34}
35
36#[cfg(test)]
37mod test {
38    storage_types! {
39        use crate::num::One;
40        use crate::si::length as l;
41        use crate::si::linear_number_density as n;
42        use crate::si::quantities::*;
43        use crate::tests::Test;
44
45        #[test]
46        fn check_dimension() {
47            let _: LinearNumberDensity<V> = (V::one()
48                / Length::new::<l::meter>(V::one())).into();
49        }
50
51        #[test]
52        fn check_units() {
53            test::<n::per_kilometer, l::kilometer>();
54            test::<n::per_meter, l::meter>();
55            test::<n::per_decimeter, l::decimeter>();
56            test::<n::per_centimeter, l::centimeter>();
57            test::<n::per_millimeter, l::millimeter>();
58
59            fn test<N: n::Conversion<V>, L: l::Conversion<V>>() {
60                Test::assert_approx_eq(&LinearNumberDensity::new::<N>(V::one()),
61                    &(V::one() / Length::new::<L>(V::one())).into());
62            }
63        }
64    }
65}