Change Meter to Metre
This commit is contained in:
parent
44ff54160c
commit
fa40445683
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "units"
|
name = "units"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
description = "Si units for typesafe calculations"
|
description = "Si units for typesafe calculations"
|
||||||
license = "MIT or Apache-2.0"
|
license = "MIT or Apache-2.0"
|
||||||
@ -13,7 +13,7 @@ categories = ["Science", "Simulation"]
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
typenum = "1.16"
|
typenum = "1.16"
|
||||||
num-traits = {version = "0.2", default-features = false}
|
num-traits = { version = "0.2", default-features = false }
|
||||||
defmt = { version = "0.3", optional = true }
|
defmt = { version = "0.3", optional = true }
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
|
167
src/display.rs
167
src/display.rs
@ -1,19 +1,16 @@
|
|||||||
#[cfg(not(feature = "std"))]
|
|
||||||
use core::fmt::{self, Display, Formatter};
|
use core::fmt::{self, Display, Formatter};
|
||||||
#[cfg(feature = "std")]
|
|
||||||
use std::fmt::{self, Display, Formatter};
|
|
||||||
|
|
||||||
use typenum::Integer;
|
use typenum::Integer;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
types::{
|
types::{
|
||||||
AmperePerMeter, AmperePerSquareMeter, Coulomb, CoulombPerCubicMeter, CoulombPerKilogram,
|
AmperePerMetre, AmperePerSquareMetre, Coulomb, CoulombPerCubicMetre, CoulombPerKilogram,
|
||||||
CoulombPerSquareMeter, CubicMeterPerKilogram, Farad, FaradPerMeter, Gray, GrayPerSecond,
|
CoulombPerSquareMetre, CubicMetrePerKilogram, Farad, FaradPerMetre, Gray, GrayPerSecond,
|
||||||
Henry, HenryPerMeter, Herz, Joule, JoulePerKelvin, JoulePerKilogramKelvin, JoulePerMole,
|
Henry, HenryPerMetre, Herz, Joule, JoulePerKelvin, JoulePerKilogramKelvin, JoulePerMole,
|
||||||
JoulePerMoleKelvin, Katal, KatalPerCubicMeter, KilogramPerCubicMeter,
|
JoulePerMoleKelvin, Katal, KatalPerCubicMetre, KilogramPerCubicMetre,
|
||||||
KilogramPerSquareMeter, Lux, MeterPerSecond, MeterPerSquareSecond, MolePerCubicMeter,
|
KilogramPerSquareMetre, Lux, MetrePerSecond, MetrePerSquareSecond, MolePerCubicMetre,
|
||||||
Newton, NewtonPerMeter, Ohm, Pascal, PascalSecond, Siemens, Tesla, Volt, VoltPerMeter,
|
Newton, NewtonPerMetre, Ohm, Pascal, PascalSecond, Siemens, Tesla, Volt, VoltPerMetre,
|
||||||
Watt, WattPerMeterKelvin, WattPerSquareMeter, Weber,
|
Watt, WattPerMetreKelvin, WattPerSquareMetre, Weber,
|
||||||
},
|
},
|
||||||
SiUnit,
|
SiUnit,
|
||||||
};
|
};
|
||||||
@ -53,11 +50,11 @@ macro_rules! display_special_unit_defmt {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "defmt")]
|
#[cfg(feature = "defmt")]
|
||||||
impl<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela> defmt::Format
|
impl<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela> defmt::Format
|
||||||
for SiUnit<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela>
|
for SiUnit<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela>
|
||||||
where
|
where
|
||||||
Second: Integer,
|
Second: Integer,
|
||||||
Meter: Integer,
|
Metre: Integer,
|
||||||
Kilogram: Integer,
|
Kilogram: Integer,
|
||||||
Ampere: Integer,
|
Ampere: Integer,
|
||||||
Kelvin: Integer,
|
Kelvin: Integer,
|
||||||
@ -89,43 +86,43 @@ where
|
|||||||
);
|
);
|
||||||
// derived units
|
// derived units
|
||||||
display_special_unit_defmt!(f, Self,
|
display_special_unit_defmt!(f, Self,
|
||||||
("m/s", MeterPerSecond<T>),
|
("m/s", MetrePerSecond<T>),
|
||||||
("m/s²", MeterPerSquareSecond<T>),
|
("m/s²", MetrePerSquareSecond<T>),
|
||||||
("kg/m³", KilogramPerCubicMeter<T>),
|
("kg/m³", KilogramPerCubicMetre<T>),
|
||||||
("kg/m²", KilogramPerSquareMeter<T>),
|
("kg/m²", KilogramPerSquareMetre<T>),
|
||||||
("m³/kg", CubicMeterPerKilogram<T>),
|
("m³/kg", CubicMetrePerKilogram<T>),
|
||||||
("A/m²", AmperePerSquareMeter<T>),
|
("A/m²", AmperePerSquareMetre<T>),
|
||||||
("A/m", AmperePerMeter<T>),
|
("A/m", AmperePerMetre<T>),
|
||||||
("mol/m³", MolePerCubicMeter<T>),
|
("mol/m³", MolePerCubicMetre<T>),
|
||||||
);
|
);
|
||||||
// derived units including special names
|
// derived units including special names
|
||||||
display_special_unit_defmt!(f, Self,
|
display_special_unit_defmt!(f, Self,
|
||||||
("Pa*s", PascalSecond<T>),
|
("Pa*s", PascalSecond<T>),
|
||||||
("N/m", NewtonPerMeter<T>),
|
("N/m", NewtonPerMetre<T>),
|
||||||
("W/m²", WattPerSquareMeter<T>),
|
("W/m²", WattPerSquareMetre<T>),
|
||||||
("J/K", JoulePerKelvin<T>),
|
("J/K", JoulePerKelvin<T>),
|
||||||
("J/(kg*K)", JoulePerKilogramKelvin<T>),
|
("J/(kg*K)", JoulePerKilogramKelvin<T>),
|
||||||
("W/(m*K)", WattPerMeterKelvin<T>),
|
("W/(m*K)", WattPerMetreKelvin<T>),
|
||||||
("V/m", VoltPerMeter<T>),
|
("V/m", VoltPerMetre<T>),
|
||||||
("C/m³", CoulombPerCubicMeter<T>),
|
("C/m³", CoulombPerCubicMetre<T>),
|
||||||
("C/m²", CoulombPerSquareMeter<T>),
|
("C/m²", CoulombPerSquareMetre<T>),
|
||||||
("F/m", FaradPerMeter<T>),
|
("F/m", FaradPerMetre<T>),
|
||||||
("H/m", HenryPerMeter<T>),
|
("H/m", HenryPerMetre<T>),
|
||||||
("J/mol", JoulePerMole<T>),
|
("J/mol", JoulePerMole<T>),
|
||||||
("J/(mol*K)", JoulePerMoleKelvin<T>),
|
("J/(mol*K)", JoulePerMoleKelvin<T>),
|
||||||
("C/kg", CoulombPerKilogram<T>),
|
("C/kg", CoulombPerKilogram<T>),
|
||||||
("Gy/s", GrayPerSecond<T>),
|
("Gy/s", GrayPerSecond<T>),
|
||||||
("kat/m³", KatalPerCubicMeter<T>),
|
("kat/m³", KatalPerCubicMetre<T>),
|
||||||
);
|
);
|
||||||
|
|
||||||
// base units
|
// base units
|
||||||
display_unit_defmt!(f, Second, "s", Meter, Kilogram, Ampere, Kelvin, Mole, Candela);
|
display_unit_defmt!(f, Second, "s", Metre, Kilogram, Ampere, Kelvin, Mole, Candela);
|
||||||
display_unit_defmt!(f, Meter, "m", Second, Kilogram, Ampere, Kelvin, Mole, Candela);
|
display_unit_defmt!(f, Metre, "m", Second, Kilogram, Ampere, Kelvin, Mole, Candela);
|
||||||
display_unit_defmt!(f, Kilogram, "kg", Second, Meter, Ampere, Kelvin, Mole, Candela);
|
display_unit_defmt!(f, Kilogram, "kg", Second, Metre, Ampere, Kelvin, Mole, Candela);
|
||||||
display_unit_defmt!(f, Ampere, "A", Second, Meter, Kilogram, Kelvin, Mole, Candela);
|
display_unit_defmt!(f, Ampere, "A", Second, Metre, Kilogram, Kelvin, Mole, Candela);
|
||||||
display_unit_defmt!(f, Kelvin, "K", Second, Meter, Kilogram, Ampere, Mole, Candela);
|
display_unit_defmt!(f, Kelvin, "K", Second, Metre, Kilogram, Ampere, Mole, Candela);
|
||||||
display_unit_defmt!(f, Mole, "mol", Second, Meter, Kilogram, Ampere, Kelvin, Candela);
|
display_unit_defmt!(f, Mole, "mol", Second, Metre, Kilogram, Ampere, Kelvin, Candela);
|
||||||
display_unit_defmt!(f, Candela, "cd", Second, Meter, Kilogram, Ampere, Kelvin, Mole);
|
display_unit_defmt!(f, Candela, "cd", Second, Metre, Kilogram, Ampere, Kelvin, Mole);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -160,11 +157,11 @@ macro_rules! display_special_unit {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela> Display
|
impl<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela> Display
|
||||||
for SiUnit<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela>
|
for SiUnit<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela>
|
||||||
where
|
where
|
||||||
Second: Integer,
|
Second: Integer,
|
||||||
Meter: Integer,
|
Metre: Integer,
|
||||||
Kilogram: Integer,
|
Kilogram: Integer,
|
||||||
Ampere: Integer,
|
Ampere: Integer,
|
||||||
Kelvin: Integer,
|
Kelvin: Integer,
|
||||||
@ -195,65 +192,67 @@ where
|
|||||||
);
|
);
|
||||||
// derived units
|
// derived units
|
||||||
display_special_unit!(f, Self,
|
display_special_unit!(f, Self,
|
||||||
("m/s", MeterPerSecond<T>),
|
("m/s", MetrePerSecond<T>),
|
||||||
("m/s²", MeterPerSquareSecond<T>),
|
("m/s²", MetrePerSquareSecond<T>),
|
||||||
("kg/m³", KilogramPerCubicMeter<T>),
|
("kg/m³", KilogramPerCubicMetre<T>),
|
||||||
("kg/m²", KilogramPerSquareMeter<T>),
|
("kg/m²", KilogramPerSquareMetre<T>),
|
||||||
("m³/kg", CubicMeterPerKilogram<T>),
|
("m³/kg", CubicMetrePerKilogram<T>),
|
||||||
("A/m²", AmperePerSquareMeter<T>),
|
("A/m²", AmperePerSquareMetre<T>),
|
||||||
("A/m", AmperePerMeter<T>),
|
("A/m", AmperePerMetre<T>),
|
||||||
("mol/m³", MolePerCubicMeter<T>),
|
("mol/m³", MolePerCubicMetre<T>),
|
||||||
);
|
);
|
||||||
// derived units including special names
|
// derived units including special names
|
||||||
display_special_unit!(f, Self,
|
display_special_unit!(f, Self,
|
||||||
("Pa*s", PascalSecond<T>),
|
("Pa*s", PascalSecond<T>),
|
||||||
("N/m", NewtonPerMeter<T>),
|
("N/m", NewtonPerMetre<T>),
|
||||||
("W/m²", WattPerSquareMeter<T>),
|
("W/m²", WattPerSquareMetre<T>),
|
||||||
("J/K", JoulePerKelvin<T>),
|
("J/K", JoulePerKelvin<T>),
|
||||||
("J/(kg*K)", JoulePerKilogramKelvin<T>),
|
("J/(kg*K)", JoulePerKilogramKelvin<T>),
|
||||||
("W/(m*K)", WattPerMeterKelvin<T>),
|
("W/(m*K)", WattPerMetreKelvin<T>),
|
||||||
("V/m", VoltPerMeter<T>),
|
("V/m", VoltPerMetre<T>),
|
||||||
("C/m³", CoulombPerCubicMeter<T>),
|
("C/m³", CoulombPerCubicMetre<T>),
|
||||||
("C/m²", CoulombPerSquareMeter<T>),
|
("C/m²", CoulombPerSquareMetre<T>),
|
||||||
("F/m", FaradPerMeter<T>),
|
("F/m", FaradPerMetre<T>),
|
||||||
("H/m", HenryPerMeter<T>),
|
("H/m", HenryPerMetre<T>),
|
||||||
("J/mol", JoulePerMole<T>),
|
("J/mol", JoulePerMole<T>),
|
||||||
("J/(mol*K)", JoulePerMoleKelvin<T>),
|
("J/(mol*K)", JoulePerMoleKelvin<T>),
|
||||||
("C/kg", CoulombPerKilogram<T>),
|
("C/kg", CoulombPerKilogram<T>),
|
||||||
("Gy/s", GrayPerSecond<T>),
|
("Gy/s", GrayPerSecond<T>),
|
||||||
("kat/m³", KatalPerCubicMeter<T>),
|
("kat/m³", KatalPerCubicMetre<T>),
|
||||||
);
|
);
|
||||||
|
|
||||||
// base units
|
// base units
|
||||||
display_unit!(f, Second, "s", Meter, Kilogram, Ampere, Kelvin, Mole, Candela);
|
display_unit!(f, Second, "s", Metre, Kilogram, Ampere, Kelvin, Mole, Candela);
|
||||||
display_unit!(f, Meter, "m", Second, Kilogram, Ampere, Kelvin, Mole, Candela);
|
display_unit!(f, Metre, "m", Second, Kilogram, Ampere, Kelvin, Mole, Candela);
|
||||||
display_unit!(f, Kilogram, "kg", Second, Meter, Ampere, Kelvin, Mole, Candela);
|
display_unit!(f, Kilogram, "kg", Second, Metre, Ampere, Kelvin, Mole, Candela);
|
||||||
display_unit!(f, Ampere, "A", Second, Meter, Kilogram, Kelvin, Mole, Candela);
|
display_unit!(f, Ampere, "A", Second, Metre, Kilogram, Kelvin, Mole, Candela);
|
||||||
display_unit!(f, Kelvin, "K", Second, Meter, Kilogram, Ampere, Mole, Candela);
|
display_unit!(f, Kelvin, "K", Second, Metre, Kilogram, Ampere, Mole, Candela);
|
||||||
display_unit!(f, Mole, "mol", Second, Meter, Kilogram, Ampere, Kelvin, Candela);
|
display_unit!(f, Mole, "mol", Second, Metre, Kilogram, Ampere, Kelvin, Candela);
|
||||||
display_unit!(f, Candela, "cd", Second, Meter, Kilogram, Ampere, Kelvin, Mole);
|
display_unit!(f, Candela, "cd", Second, Metre, Kilogram, Ampere, Kelvin, Mole);
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod test {
|
mod test {
|
||||||
use crate::types::{Ampere, Candela, Kelvin, Kilogram, Meter, Mole, Second, Unit};
|
use crate::types::{Ampere, Candela, Kelvin, Kilogram, Metre, Mole, Second, Unit};
|
||||||
|
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
#[cfg(feature = "std")]
|
||||||
fn debug() {
|
fn debug() {
|
||||||
let m = Meter::new(2);
|
let m = Metre::new(2);
|
||||||
assert_eq!(format!("{m:?}"), "SiUnit { value: 2, _s: PhantomData<typenum::int::Z0>, _m: PhantomData<typenum::int::PInt<typenum::uint::UInt<typenum::uint::UTerm, typenum::bit::B1>>>, _kg: PhantomData<typenum::int::Z0>, _a: PhantomData<typenum::int::Z0>, _k: PhantomData<typenum::int::Z0>, _mol: PhantomData<typenum::int::Z0>, _cd: PhantomData<typenum::int::Z0> }".to_owned());
|
assert_eq!(format!("{m:?}"), "SiUnit { value: 2, _s: PhantomData<typenum::int::Z0>, _m: PhantomData<typenum::int::PInt<typenum::uint::UInt<typenum::uint::UTerm, typenum::bit::B1>>>, _kg: PhantomData<typenum::int::Z0>, _a: PhantomData<typenum::int::Z0>, _k: PhantomData<typenum::int::Z0>, _mol: PhantomData<typenum::int::Z0>, _cd: PhantomData<typenum::int::Z0> }".to_owned());
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[allow(clippy::cognitive_complexity)]
|
#[allow(clippy::cognitive_complexity)]
|
||||||
|
#[cfg(feature = "std")]
|
||||||
fn display() {
|
fn display() {
|
||||||
let unit = Unit::new(2);
|
let unit = Unit::new(2);
|
||||||
let second = Second::new(2);
|
let second = Second::new(2);
|
||||||
let meter = Meter::new(2);
|
let meter = Metre::new(2);
|
||||||
let kilogram = Kilogram::new(2);
|
let kilogram = Kilogram::new(2);
|
||||||
let ampere = Ampere::new(2);
|
let ampere = Ampere::new(2);
|
||||||
let kelvin = Kelvin::new(2);
|
let kelvin = Kelvin::new(2);
|
||||||
@ -299,30 +298,30 @@ mod test {
|
|||||||
assert_eq!(Gray::new(2).to_string(), "2Gy|Sv");
|
assert_eq!(Gray::new(2).to_string(), "2Gy|Sv");
|
||||||
assert_eq!(Katal::new(2).to_string(), "2kat");
|
assert_eq!(Katal::new(2).to_string(), "2kat");
|
||||||
|
|
||||||
assert_eq!(MeterPerSecond::new(2).to_string(), "2m/s");
|
assert_eq!(MetrePerSecond::new(2).to_string(), "2m/s");
|
||||||
assert_eq!(MeterPerSquareSecond::new(2).to_string(), "2m/s²");
|
assert_eq!(MetrePerSquareSecond::new(2).to_string(), "2m/s²");
|
||||||
assert_eq!(KilogramPerCubicMeter::new(2).to_string(), "2kg/m³");
|
assert_eq!(KilogramPerCubicMetre::new(2).to_string(), "2kg/m³");
|
||||||
assert_eq!(KilogramPerSquareMeter::new(2).to_string(), "2kg/m²");
|
assert_eq!(KilogramPerSquareMetre::new(2).to_string(), "2kg/m²");
|
||||||
assert_eq!(CubicMeterPerKilogram::new(2).to_string(), "2m³/kg");
|
assert_eq!(CubicMetrePerKilogram::new(2).to_string(), "2m³/kg");
|
||||||
assert_eq!(AmperePerSquareMeter::new(2).to_string(), "2A/m²");
|
assert_eq!(AmperePerSquareMetre::new(2).to_string(), "2A/m²");
|
||||||
assert_eq!(AmperePerMeter::new(2).to_string(), "2A/m");
|
assert_eq!(AmperePerMetre::new(2).to_string(), "2A/m");
|
||||||
assert_eq!(MolePerCubicMeter::new(2).to_string(), "2mol/m³");
|
assert_eq!(MolePerCubicMetre::new(2).to_string(), "2mol/m³");
|
||||||
|
|
||||||
assert_eq!(PascalSecond::new(2).to_string(), "2Pa*s");
|
assert_eq!(PascalSecond::new(2).to_string(), "2Pa*s");
|
||||||
assert_eq!(NewtonPerMeter::new(2).to_string(), "2N/m");
|
assert_eq!(NewtonPerMetre::new(2).to_string(), "2N/m");
|
||||||
assert_eq!(WattPerSquareMeter::new(2).to_string(), "2W/m²");
|
assert_eq!(WattPerSquareMetre::new(2).to_string(), "2W/m²");
|
||||||
assert_eq!(JoulePerKelvin::new(2).to_string(), "2J/K");
|
assert_eq!(JoulePerKelvin::new(2).to_string(), "2J/K");
|
||||||
assert_eq!(JoulePerKilogramKelvin::new(2).to_string(), "2J/(kg*K)");
|
assert_eq!(JoulePerKilogramKelvin::new(2).to_string(), "2J/(kg*K)");
|
||||||
assert_eq!(WattPerMeterKelvin::new(2).to_string(), "2W/(m*K)");
|
assert_eq!(WattPerMetreKelvin::new(2).to_string(), "2W/(m*K)");
|
||||||
assert_eq!(VoltPerMeter::new(2).to_string(), "2V/m");
|
assert_eq!(VoltPerMetre::new(2).to_string(), "2V/m");
|
||||||
assert_eq!(CoulombPerCubicMeter::new(2).to_string(), "2C/m³");
|
assert_eq!(CoulombPerCubicMetre::new(2).to_string(), "2C/m³");
|
||||||
assert_eq!(CoulombPerSquareMeter::new(2).to_string(), "2C/m²");
|
assert_eq!(CoulombPerSquareMetre::new(2).to_string(), "2C/m²");
|
||||||
assert_eq!(FaradPerMeter::new(2).to_string(), "2F/m");
|
assert_eq!(FaradPerMetre::new(2).to_string(), "2F/m");
|
||||||
assert_eq!(HenryPerMeter::new(2).to_string(), "2H/m");
|
assert_eq!(HenryPerMetre::new(2).to_string(), "2H/m");
|
||||||
assert_eq!(JoulePerMole::new(2).to_string(), "2J/mol");
|
assert_eq!(JoulePerMole::new(2).to_string(), "2J/mol");
|
||||||
assert_eq!(JoulePerMoleKelvin::new(2).to_string(), "2J/(mol*K)");
|
assert_eq!(JoulePerMoleKelvin::new(2).to_string(), "2J/(mol*K)");
|
||||||
assert_eq!(CoulombPerKilogram::new(2).to_string(), "2C/kg");
|
assert_eq!(CoulombPerKilogram::new(2).to_string(), "2C/kg");
|
||||||
assert_eq!(GrayPerSecond::new(2).to_string(), "2Gy/s");
|
assert_eq!(GrayPerSecond::new(2).to_string(), "2Gy/s");
|
||||||
assert_eq!(KatalPerCubicMeter::new(2).to_string(), "2kat/m³");
|
assert_eq!(KatalPerCubicMetre::new(2).to_string(), "2kat/m³");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
255
src/lib.rs
255
src/lib.rs
@ -2,7 +2,6 @@
|
|||||||
mod display;
|
mod display;
|
||||||
pub mod types;
|
pub mod types;
|
||||||
|
|
||||||
#[cfg(not(feature = "std"))]
|
|
||||||
use core::{
|
use core::{
|
||||||
marker::PhantomData,
|
marker::PhantomData,
|
||||||
ops::{
|
ops::{
|
||||||
@ -10,24 +9,16 @@ use core::{
|
|||||||
SubAssign,
|
SubAssign,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
#[cfg(feature = "std")]
|
|
||||||
use std::{
|
|
||||||
marker::PhantomData,
|
|
||||||
ops::{
|
|
||||||
Add, AddAssign, Deref, DerefMut, Div, DivAssign, Mul, MulAssign, Neg, Rem, RemAssign, Sub,
|
|
||||||
SubAssign,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
use num_traits::{Num, One, Zero};
|
use num_traits::{Num, One, Zero};
|
||||||
use typenum::{int::Z0, op, Integer};
|
use typenum::{int::Z0, op, Integer};
|
||||||
use types::Unit;
|
use types::Unit;
|
||||||
|
|
||||||
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy)]
|
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy)]
|
||||||
pub struct SiUnit<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela>
|
pub struct SiUnit<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela>
|
||||||
where
|
where
|
||||||
Second: Integer,
|
Second: Integer,
|
||||||
Meter: Integer,
|
Metre: Integer,
|
||||||
Kilogram: Integer,
|
Kilogram: Integer,
|
||||||
Ampere: Integer,
|
Ampere: Integer,
|
||||||
Kelvin: Integer,
|
Kelvin: Integer,
|
||||||
@ -36,7 +27,7 @@ where
|
|||||||
{
|
{
|
||||||
value: T,
|
value: T,
|
||||||
_s: PhantomData<Second>,
|
_s: PhantomData<Second>,
|
||||||
_m: PhantomData<Meter>,
|
_m: PhantomData<Metre>,
|
||||||
_kg: PhantomData<Kilogram>,
|
_kg: PhantomData<Kilogram>,
|
||||||
_a: PhantomData<Ampere>,
|
_a: PhantomData<Ampere>,
|
||||||
_k: PhantomData<Kelvin>,
|
_k: PhantomData<Kelvin>,
|
||||||
@ -44,11 +35,11 @@ where
|
|||||||
_cd: PhantomData<Candela>,
|
_cd: PhantomData<Candela>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela> Deref
|
impl<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela> Deref
|
||||||
for SiUnit<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela>
|
for SiUnit<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela>
|
||||||
where
|
where
|
||||||
Second: Integer,
|
Second: Integer,
|
||||||
Meter: Integer,
|
Metre: Integer,
|
||||||
Kilogram: Integer,
|
Kilogram: Integer,
|
||||||
Ampere: Integer,
|
Ampere: Integer,
|
||||||
Kelvin: Integer,
|
Kelvin: Integer,
|
||||||
@ -62,11 +53,11 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela> DerefMut
|
impl<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela> DerefMut
|
||||||
for SiUnit<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela>
|
for SiUnit<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela>
|
||||||
where
|
where
|
||||||
Second: Integer,
|
Second: Integer,
|
||||||
Meter: Integer,
|
Metre: Integer,
|
||||||
Kilogram: Integer,
|
Kilogram: Integer,
|
||||||
Ampere: Integer,
|
Ampere: Integer,
|
||||||
Kelvin: Integer,
|
Kelvin: Integer,
|
||||||
@ -78,11 +69,11 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela> Neg
|
impl<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela> Neg
|
||||||
for SiUnit<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela>
|
for SiUnit<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela>
|
||||||
where
|
where
|
||||||
Second: Integer,
|
Second: Integer,
|
||||||
Meter: Integer,
|
Metre: Integer,
|
||||||
Kilogram: Integer,
|
Kilogram: Integer,
|
||||||
Ampere: Integer,
|
Ampere: Integer,
|
||||||
Kelvin: Integer,
|
Kelvin: Integer,
|
||||||
@ -90,18 +81,18 @@ where
|
|||||||
Candela: Integer,
|
Candela: Integer,
|
||||||
T: Neg,
|
T: Neg,
|
||||||
{
|
{
|
||||||
type Output = SiUnit<T::Output, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela>;
|
type Output = SiUnit<T::Output, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela>;
|
||||||
|
|
||||||
fn neg(self) -> Self::Output {
|
fn neg(self) -> Self::Output {
|
||||||
Self::Output::new(-self.value)
|
Self::Output::new(-self.value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela> Zero
|
impl<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela> Zero
|
||||||
for SiUnit<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela>
|
for SiUnit<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela>
|
||||||
where
|
where
|
||||||
Second: Integer,
|
Second: Integer,
|
||||||
Meter: Integer,
|
Metre: Integer,
|
||||||
Kilogram: Integer,
|
Kilogram: Integer,
|
||||||
Ampere: Integer,
|
Ampere: Integer,
|
||||||
Kelvin: Integer,
|
Kelvin: Integer,
|
||||||
@ -118,11 +109,11 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela> One
|
impl<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela> One
|
||||||
for SiUnit<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela>
|
for SiUnit<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela>
|
||||||
where
|
where
|
||||||
Second: Integer + Add<Output = Second>,
|
Second: Integer + Add<Output = Second>,
|
||||||
Meter: Integer + Add<Output = Meter>,
|
Metre: Integer + Add<Output = Metre>,
|
||||||
Kilogram: Integer + Add<Output = Kilogram>,
|
Kilogram: Integer + Add<Output = Kilogram>,
|
||||||
Ampere: Integer + Add<Output = Ampere>,
|
Ampere: Integer + Add<Output = Ampere>,
|
||||||
Kelvin: Integer + Add<Output = Kelvin>,
|
Kelvin: Integer + Add<Output = Kelvin>,
|
||||||
@ -130,7 +121,7 @@ where
|
|||||||
Candela: Integer + Add<Output = Candela>,
|
Candela: Integer + Add<Output = Candela>,
|
||||||
T: One,
|
T: One,
|
||||||
<Second as Add>::Output: Integer,
|
<Second as Add>::Output: Integer,
|
||||||
<Meter as Add>::Output: Integer,
|
<Metre as Add>::Output: Integer,
|
||||||
<Kilogram as Add>::Output: Integer,
|
<Kilogram as Add>::Output: Integer,
|
||||||
<Ampere as Add>::Output: Integer,
|
<Ampere as Add>::Output: Integer,
|
||||||
<Kelvin as Add>::Output: Integer,
|
<Kelvin as Add>::Output: Integer,
|
||||||
@ -142,11 +133,11 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela> Num
|
impl<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela> Num
|
||||||
for SiUnit<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela>
|
for SiUnit<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela>
|
||||||
where
|
where
|
||||||
Second: Integer + Add<Output = Second> + Sub<Output = Second> + PartialEq,
|
Second: Integer + Add<Output = Second> + Sub<Output = Second> + PartialEq,
|
||||||
Meter: Integer + Add<Output = Meter> + Sub<Output = Meter> + PartialEq,
|
Metre: Integer + Add<Output = Metre> + Sub<Output = Metre> + PartialEq,
|
||||||
Kilogram: Integer + Add<Output = Kilogram> + Sub<Output = Kilogram> + PartialEq,
|
Kilogram: Integer + Add<Output = Kilogram> + Sub<Output = Kilogram> + PartialEq,
|
||||||
Ampere: Integer + Add<Output = Ampere> + Sub<Output = Ampere> + PartialEq,
|
Ampere: Integer + Add<Output = Ampere> + Sub<Output = Ampere> + PartialEq,
|
||||||
Kelvin: Integer + Add<Output = Kelvin> + Sub<Output = Kelvin> + PartialEq,
|
Kelvin: Integer + Add<Output = Kelvin> + Sub<Output = Kelvin> + PartialEq,
|
||||||
@ -161,11 +152,11 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela> Add
|
impl<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela> Add
|
||||||
for SiUnit<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela>
|
for SiUnit<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela>
|
||||||
where
|
where
|
||||||
Second: Integer,
|
Second: Integer,
|
||||||
Meter: Integer,
|
Metre: Integer,
|
||||||
Kilogram: Integer,
|
Kilogram: Integer,
|
||||||
Ampere: Integer,
|
Ampere: Integer,
|
||||||
Kelvin: Integer,
|
Kelvin: Integer,
|
||||||
@ -173,18 +164,18 @@ where
|
|||||||
Candela: Integer,
|
Candela: Integer,
|
||||||
T: Add,
|
T: Add,
|
||||||
{
|
{
|
||||||
type Output = SiUnit<T::Output, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela>;
|
type Output = SiUnit<T::Output, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela>;
|
||||||
|
|
||||||
fn add(self, rhs: Self) -> Self::Output {
|
fn add(self, rhs: Self) -> Self::Output {
|
||||||
Self::Output::new(self.value + rhs.value)
|
Self::Output::new(self.value + rhs.value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela> AddAssign
|
impl<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela> AddAssign
|
||||||
for SiUnit<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela>
|
for SiUnit<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela>
|
||||||
where
|
where
|
||||||
Second: Integer,
|
Second: Integer,
|
||||||
Meter: Integer,
|
Metre: Integer,
|
||||||
Kilogram: Integer,
|
Kilogram: Integer,
|
||||||
Ampere: Integer,
|
Ampere: Integer,
|
||||||
Kelvin: Integer,
|
Kelvin: Integer,
|
||||||
@ -197,11 +188,11 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela> Sub
|
impl<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela> Sub
|
||||||
for SiUnit<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela>
|
for SiUnit<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela>
|
||||||
where
|
where
|
||||||
Second: Integer,
|
Second: Integer,
|
||||||
Meter: Integer,
|
Metre: Integer,
|
||||||
Kilogram: Integer,
|
Kilogram: Integer,
|
||||||
Ampere: Integer,
|
Ampere: Integer,
|
||||||
Kelvin: Integer,
|
Kelvin: Integer,
|
||||||
@ -209,18 +200,18 @@ where
|
|||||||
Candela: Integer,
|
Candela: Integer,
|
||||||
T: Sub,
|
T: Sub,
|
||||||
{
|
{
|
||||||
type Output = SiUnit<T::Output, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela>;
|
type Output = SiUnit<T::Output, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela>;
|
||||||
|
|
||||||
fn sub(self, rhs: Self) -> Self::Output {
|
fn sub(self, rhs: Self) -> Self::Output {
|
||||||
Self::Output::new(self.value - rhs.value)
|
Self::Output::new(self.value - rhs.value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela> SubAssign
|
impl<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela> SubAssign
|
||||||
for SiUnit<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela>
|
for SiUnit<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela>
|
||||||
where
|
where
|
||||||
Second: Integer,
|
Second: Integer,
|
||||||
Meter: Integer,
|
Metre: Integer,
|
||||||
Kilogram: Integer,
|
Kilogram: Integer,
|
||||||
Ampere: Integer,
|
Ampere: Integer,
|
||||||
Kelvin: Integer,
|
Kelvin: Integer,
|
||||||
@ -233,11 +224,11 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela> Mul<T>
|
impl<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela> Mul<T>
|
||||||
for SiUnit<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela>
|
for SiUnit<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela>
|
||||||
where
|
where
|
||||||
Second: Integer,
|
Second: Integer,
|
||||||
Meter: Integer,
|
Metre: Integer,
|
||||||
Kilogram: Integer,
|
Kilogram: Integer,
|
||||||
Ampere: Integer,
|
Ampere: Integer,
|
||||||
Kelvin: Integer,
|
Kelvin: Integer,
|
||||||
@ -252,11 +243,11 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela> MulAssign<T>
|
impl<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela> MulAssign<T>
|
||||||
for SiUnit<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela>
|
for SiUnit<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela>
|
||||||
where
|
where
|
||||||
Second: Integer,
|
Second: Integer,
|
||||||
Meter: Integer,
|
Metre: Integer,
|
||||||
Kilogram: Integer,
|
Kilogram: Integer,
|
||||||
Ampere: Integer,
|
Ampere: Integer,
|
||||||
Kelvin: Integer,
|
Kelvin: Integer,
|
||||||
@ -269,11 +260,11 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela> Div<T>
|
impl<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela> Div<T>
|
||||||
for SiUnit<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela>
|
for SiUnit<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela>
|
||||||
where
|
where
|
||||||
Second: Integer + Sub<Z0>,
|
Second: Integer + Sub<Z0>,
|
||||||
Meter: Integer + Sub<Z0>,
|
Metre: Integer + Sub<Z0>,
|
||||||
Kilogram: Integer + Sub<Z0>,
|
Kilogram: Integer + Sub<Z0>,
|
||||||
Ampere: Integer + Sub<Z0>,
|
Ampere: Integer + Sub<Z0>,
|
||||||
Kelvin: Integer + Sub<Z0>,
|
Kelvin: Integer + Sub<Z0>,
|
||||||
@ -281,7 +272,7 @@ where
|
|||||||
Candela: Integer + Sub<Z0>,
|
Candela: Integer + Sub<Z0>,
|
||||||
T: Div,
|
T: Div,
|
||||||
<Second as Sub<Z0>>::Output: Integer,
|
<Second as Sub<Z0>>::Output: Integer,
|
||||||
<Meter as Sub<Z0>>::Output: Integer,
|
<Metre as Sub<Z0>>::Output: Integer,
|
||||||
<Kilogram as Sub<Z0>>::Output: Integer,
|
<Kilogram as Sub<Z0>>::Output: Integer,
|
||||||
<Ampere as Sub<Z0>>::Output: Integer,
|
<Ampere as Sub<Z0>>::Output: Integer,
|
||||||
<Kelvin as Sub<Z0>>::Output: Integer,
|
<Kelvin as Sub<Z0>>::Output: Integer,
|
||||||
@ -295,11 +286,11 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela> DivAssign<T>
|
impl<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela> DivAssign<T>
|
||||||
for SiUnit<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela>
|
for SiUnit<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela>
|
||||||
where
|
where
|
||||||
Second: Integer,
|
Second: Integer,
|
||||||
Meter: Integer,
|
Metre: Integer,
|
||||||
Kilogram: Integer,
|
Kilogram: Integer,
|
||||||
Ampere: Integer,
|
Ampere: Integer,
|
||||||
Kelvin: Integer,
|
Kelvin: Integer,
|
||||||
@ -312,11 +303,11 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela> Rem<T>
|
impl<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela> Rem<T>
|
||||||
for SiUnit<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela>
|
for SiUnit<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela>
|
||||||
where
|
where
|
||||||
Second: Integer + Sub<Z0>,
|
Second: Integer + Sub<Z0>,
|
||||||
Meter: Integer + Sub<Z0>,
|
Metre: Integer + Sub<Z0>,
|
||||||
Kilogram: Integer + Sub<Z0>,
|
Kilogram: Integer + Sub<Z0>,
|
||||||
Ampere: Integer + Sub<Z0>,
|
Ampere: Integer + Sub<Z0>,
|
||||||
Kelvin: Integer + Sub<Z0>,
|
Kelvin: Integer + Sub<Z0>,
|
||||||
@ -324,7 +315,7 @@ where
|
|||||||
Candela: Integer + Sub<Z0>,
|
Candela: Integer + Sub<Z0>,
|
||||||
T: Rem,
|
T: Rem,
|
||||||
<Second as Sub<Z0>>::Output: Integer,
|
<Second as Sub<Z0>>::Output: Integer,
|
||||||
<Meter as Sub<Z0>>::Output: Integer,
|
<Metre as Sub<Z0>>::Output: Integer,
|
||||||
<Kilogram as Sub<Z0>>::Output: Integer,
|
<Kilogram as Sub<Z0>>::Output: Integer,
|
||||||
<Ampere as Sub<Z0>>::Output: Integer,
|
<Ampere as Sub<Z0>>::Output: Integer,
|
||||||
<Kelvin as Sub<Z0>>::Output: Integer,
|
<Kelvin as Sub<Z0>>::Output: Integer,
|
||||||
@ -338,11 +329,11 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela> RemAssign<T>
|
impl<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela> RemAssign<T>
|
||||||
for SiUnit<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela>
|
for SiUnit<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela>
|
||||||
where
|
where
|
||||||
Second: Integer,
|
Second: Integer,
|
||||||
Meter: Integer,
|
Metre: Integer,
|
||||||
Kilogram: Integer,
|
Kilogram: Integer,
|
||||||
Ampere: Integer,
|
Ampere: Integer,
|
||||||
Kelvin: Integer,
|
Kelvin: Integer,
|
||||||
@ -355,11 +346,11 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela>
|
impl<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela>
|
||||||
SiUnit<T, Second, Meter, Kilogram, Ampere, Kelvin, Mole, Candela>
|
SiUnit<T, Second, Metre, Kilogram, Ampere, Kelvin, Mole, Candela>
|
||||||
where
|
where
|
||||||
Second: Integer,
|
Second: Integer,
|
||||||
Meter: Integer,
|
Metre: Integer,
|
||||||
Kilogram: Integer,
|
Kilogram: Integer,
|
||||||
Ampere: Integer,
|
Ampere: Integer,
|
||||||
Kelvin: Integer,
|
Kelvin: Integer,
|
||||||
@ -383,21 +374,21 @@ where
|
|||||||
impl<
|
impl<
|
||||||
T,
|
T,
|
||||||
Second1,
|
Second1,
|
||||||
Meter1,
|
Metre1,
|
||||||
Kilogram1,
|
Kilogram1,
|
||||||
Ampere1,
|
Ampere1,
|
||||||
Kelvin1,
|
Kelvin1,
|
||||||
Mole1,
|
Mole1,
|
||||||
Candela1,
|
Candela1,
|
||||||
Second2,
|
Second2,
|
||||||
Meter2,
|
Metre2,
|
||||||
Kilogram2,
|
Kilogram2,
|
||||||
Ampere2,
|
Ampere2,
|
||||||
Kelvin2,
|
Kelvin2,
|
||||||
Mole2,
|
Mole2,
|
||||||
Candela2,
|
Candela2,
|
||||||
> Mul<SiUnit<T, Second1, Meter1, Kilogram1, Ampere1, Kelvin1, Mole1, Candela1>>
|
> Mul<SiUnit<T, Second1, Metre1, Kilogram1, Ampere1, Kelvin1, Mole1, Candela1>>
|
||||||
for SiUnit<T, Second2, Meter2, Kilogram2, Ampere2, Kelvin2, Mole2, Candela2>
|
for SiUnit<T, Second2, Metre2, Kilogram2, Ampere2, Kelvin2, Mole2, Candela2>
|
||||||
where
|
where
|
||||||
Mole2: Integer,
|
Mole2: Integer,
|
||||||
Candela2: Integer,
|
Candela2: Integer,
|
||||||
@ -406,16 +397,16 @@ where
|
|||||||
Kelvin1: Integer + Add<Kelvin2>,
|
Kelvin1: Integer + Add<Kelvin2>,
|
||||||
Ampere1: Integer + Add<Ampere2>,
|
Ampere1: Integer + Add<Ampere2>,
|
||||||
Kilogram1: Integer + Add<Kilogram2>,
|
Kilogram1: Integer + Add<Kilogram2>,
|
||||||
Meter1: Integer + Add<Meter2>,
|
Metre1: Integer + Add<Metre2>,
|
||||||
Second1: Integer + Add<Second2>,
|
Second1: Integer + Add<Second2>,
|
||||||
Kelvin2: Integer,
|
Kelvin2: Integer,
|
||||||
Ampere2: Integer,
|
Ampere2: Integer,
|
||||||
Kilogram2: Integer,
|
Kilogram2: Integer,
|
||||||
Meter2: Integer,
|
Metre2: Integer,
|
||||||
Second2: Integer,
|
Second2: Integer,
|
||||||
T: Mul,
|
T: Mul,
|
||||||
Second1::Output: Integer,
|
Second1::Output: Integer,
|
||||||
Meter1::Output: Integer,
|
Metre1::Output: Integer,
|
||||||
Kilogram1::Output: Integer,
|
Kilogram1::Output: Integer,
|
||||||
Ampere1::Output: Integer,
|
Ampere1::Output: Integer,
|
||||||
Kelvin1::Output: Integer,
|
Kelvin1::Output: Integer,
|
||||||
@ -425,7 +416,7 @@ where
|
|||||||
type Output = SiUnit<
|
type Output = SiUnit<
|
||||||
T::Output,
|
T::Output,
|
||||||
op!(Second1 + Second2),
|
op!(Second1 + Second2),
|
||||||
op!(Meter1 + Meter2),
|
op!(Metre1 + Metre2),
|
||||||
op!(Kilogram1 + Kilogram2),
|
op!(Kilogram1 + Kilogram2),
|
||||||
op!(Ampere1 + Ampere2),
|
op!(Ampere1 + Ampere2),
|
||||||
op!(Kelvin1 + Kelvin2),
|
op!(Kelvin1 + Kelvin2),
|
||||||
@ -435,7 +426,7 @@ where
|
|||||||
|
|
||||||
fn mul(
|
fn mul(
|
||||||
self,
|
self,
|
||||||
rhs: SiUnit<T, Second1, Meter1, Kilogram1, Ampere1, Kelvin1, Mole1, Candela1>,
|
rhs: SiUnit<T, Second1, Metre1, Kilogram1, Ampere1, Kelvin1, Mole1, Candela1>,
|
||||||
) -> Self::Output {
|
) -> Self::Output {
|
||||||
Self::Output::new(self.value * rhs.value)
|
Self::Output::new(self.value * rhs.value)
|
||||||
}
|
}
|
||||||
@ -444,31 +435,31 @@ where
|
|||||||
impl<
|
impl<
|
||||||
T,
|
T,
|
||||||
Second1,
|
Second1,
|
||||||
Meter1,
|
Metre1,
|
||||||
Kilogram1,
|
Kilogram1,
|
||||||
Ampere1,
|
Ampere1,
|
||||||
Kelvin1,
|
Kelvin1,
|
||||||
Mole1,
|
Mole1,
|
||||||
Candela1,
|
Candela1,
|
||||||
Second2,
|
Second2,
|
||||||
Meter2,
|
Metre2,
|
||||||
Kilogram2,
|
Kilogram2,
|
||||||
Ampere2,
|
Ampere2,
|
||||||
Kelvin2,
|
Kelvin2,
|
||||||
Mole2,
|
Mole2,
|
||||||
Candela2,
|
Candela2,
|
||||||
> Div<SiUnit<T, Second1, Meter1, Kilogram1, Ampere1, Kelvin1, Mole1, Candela1>>
|
> Div<SiUnit<T, Second1, Metre1, Kilogram1, Ampere1, Kelvin1, Mole1, Candela1>>
|
||||||
for SiUnit<T, Second2, Meter2, Kilogram2, Ampere2, Kelvin2, Mole2, Candela2>
|
for SiUnit<T, Second2, Metre2, Kilogram2, Ampere2, Kelvin2, Mole2, Candela2>
|
||||||
where
|
where
|
||||||
Second1: Integer,
|
Second1: Integer,
|
||||||
Meter1: Integer,
|
Metre1: Integer,
|
||||||
Kilogram1: Integer,
|
Kilogram1: Integer,
|
||||||
Ampere1: Integer,
|
Ampere1: Integer,
|
||||||
Kelvin1: Integer,
|
Kelvin1: Integer,
|
||||||
Mole1: Integer,
|
Mole1: Integer,
|
||||||
Candela1: Integer,
|
Candela1: Integer,
|
||||||
Second2: Integer + Sub<Second1>,
|
Second2: Integer + Sub<Second1>,
|
||||||
Meter2: Integer + Sub<Meter1>,
|
Metre2: Integer + Sub<Metre1>,
|
||||||
Kilogram2: Integer + Sub<Kilogram1>,
|
Kilogram2: Integer + Sub<Kilogram1>,
|
||||||
Ampere2: Integer + Sub<Ampere1>,
|
Ampere2: Integer + Sub<Ampere1>,
|
||||||
Kelvin2: Integer + Sub<Kelvin1>,
|
Kelvin2: Integer + Sub<Kelvin1>,
|
||||||
@ -476,7 +467,7 @@ where
|
|||||||
Candela2: Integer + Sub<Candela1>,
|
Candela2: Integer + Sub<Candela1>,
|
||||||
T: Div,
|
T: Div,
|
||||||
Second2::Output: Integer,
|
Second2::Output: Integer,
|
||||||
Meter2::Output: Integer,
|
Metre2::Output: Integer,
|
||||||
Kilogram2::Output: Integer,
|
Kilogram2::Output: Integer,
|
||||||
Ampere2::Output: Integer,
|
Ampere2::Output: Integer,
|
||||||
Kelvin2::Output: Integer,
|
Kelvin2::Output: Integer,
|
||||||
@ -486,7 +477,7 @@ where
|
|||||||
type Output = SiUnit<
|
type Output = SiUnit<
|
||||||
T::Output,
|
T::Output,
|
||||||
op!(Second2 - Second1),
|
op!(Second2 - Second1),
|
||||||
op!(Meter2 - Meter1),
|
op!(Metre2 - Metre1),
|
||||||
op!(Kilogram2 - Kilogram1),
|
op!(Kilogram2 - Kilogram1),
|
||||||
op!(Ampere2 - Ampere1),
|
op!(Ampere2 - Ampere1),
|
||||||
op!(Kelvin2 - Kelvin1),
|
op!(Kelvin2 - Kelvin1),
|
||||||
@ -496,7 +487,7 @@ where
|
|||||||
|
|
||||||
fn div(
|
fn div(
|
||||||
self,
|
self,
|
||||||
rhs: SiUnit<T, Second1, Meter1, Kilogram1, Ampere1, Kelvin1, Mole1, Candela1>,
|
rhs: SiUnit<T, Second1, Metre1, Kilogram1, Ampere1, Kelvin1, Mole1, Candela1>,
|
||||||
) -> Self::Output {
|
) -> Self::Output {
|
||||||
Self::Output::new(self.value / rhs.value)
|
Self::Output::new(self.value / rhs.value)
|
||||||
}
|
}
|
||||||
@ -505,31 +496,31 @@ where
|
|||||||
impl<
|
impl<
|
||||||
T,
|
T,
|
||||||
Second1,
|
Second1,
|
||||||
Meter1,
|
Metre1,
|
||||||
Kilogram1,
|
Kilogram1,
|
||||||
Ampere1,
|
Ampere1,
|
||||||
Kelvin1,
|
Kelvin1,
|
||||||
Mole1,
|
Mole1,
|
||||||
Candela1,
|
Candela1,
|
||||||
Second2,
|
Second2,
|
||||||
Meter2,
|
Metre2,
|
||||||
Kilogram2,
|
Kilogram2,
|
||||||
Ampere2,
|
Ampere2,
|
||||||
Kelvin2,
|
Kelvin2,
|
||||||
Mole2,
|
Mole2,
|
||||||
Candela2,
|
Candela2,
|
||||||
> Rem<SiUnit<T, Second1, Meter1, Kilogram1, Ampere1, Kelvin1, Mole1, Candela1>>
|
> Rem<SiUnit<T, Second1, Metre1, Kilogram1, Ampere1, Kelvin1, Mole1, Candela1>>
|
||||||
for SiUnit<T, Second2, Meter2, Kilogram2, Ampere2, Kelvin2, Mole2, Candela2>
|
for SiUnit<T, Second2, Metre2, Kilogram2, Ampere2, Kelvin2, Mole2, Candela2>
|
||||||
where
|
where
|
||||||
Second1: Integer,
|
Second1: Integer,
|
||||||
Meter1: Integer,
|
Metre1: Integer,
|
||||||
Kilogram1: Integer,
|
Kilogram1: Integer,
|
||||||
Ampere1: Integer,
|
Ampere1: Integer,
|
||||||
Kelvin1: Integer,
|
Kelvin1: Integer,
|
||||||
Mole1: Integer,
|
Mole1: Integer,
|
||||||
Candela1: Integer,
|
Candela1: Integer,
|
||||||
Second2: Integer + Sub<Second1>,
|
Second2: Integer + Sub<Second1>,
|
||||||
Meter2: Integer + Sub<Meter1>,
|
Metre2: Integer + Sub<Metre1>,
|
||||||
Kilogram2: Integer + Sub<Kilogram1>,
|
Kilogram2: Integer + Sub<Kilogram1>,
|
||||||
Ampere2: Integer + Sub<Ampere1>,
|
Ampere2: Integer + Sub<Ampere1>,
|
||||||
Kelvin2: Integer + Sub<Kelvin1>,
|
Kelvin2: Integer + Sub<Kelvin1>,
|
||||||
@ -537,7 +528,7 @@ where
|
|||||||
Candela2: Integer + Sub<Candela1>,
|
Candela2: Integer + Sub<Candela1>,
|
||||||
T: Rem,
|
T: Rem,
|
||||||
Second2::Output: Integer,
|
Second2::Output: Integer,
|
||||||
Meter2::Output: Integer,
|
Metre2::Output: Integer,
|
||||||
Kilogram2::Output: Integer,
|
Kilogram2::Output: Integer,
|
||||||
Ampere2::Output: Integer,
|
Ampere2::Output: Integer,
|
||||||
Kelvin2::Output: Integer,
|
Kelvin2::Output: Integer,
|
||||||
@ -547,7 +538,7 @@ where
|
|||||||
type Output = SiUnit<
|
type Output = SiUnit<
|
||||||
T::Output,
|
T::Output,
|
||||||
op!(Second2 - Second1),
|
op!(Second2 - Second1),
|
||||||
op!(Meter2 - Meter1),
|
op!(Metre2 - Metre1),
|
||||||
op!(Kilogram2 - Kilogram1),
|
op!(Kilogram2 - Kilogram1),
|
||||||
op!(Ampere2 - Ampere1),
|
op!(Ampere2 - Ampere1),
|
||||||
op!(Kelvin2 - Kelvin1),
|
op!(Kelvin2 - Kelvin1),
|
||||||
@ -557,7 +548,7 @@ where
|
|||||||
|
|
||||||
fn rem(
|
fn rem(
|
||||||
self,
|
self,
|
||||||
rhs: SiUnit<T, Second1, Meter1, Kilogram1, Ampere1, Kelvin1, Mole1, Candela1>,
|
rhs: SiUnit<T, Second1, Metre1, Kilogram1, Ampere1, Kelvin1, Mole1, Candela1>,
|
||||||
) -> Self::Output {
|
) -> Self::Output {
|
||||||
Self::Output::new(self.value % rhs.value)
|
Self::Output::new(self.value % rhs.value)
|
||||||
}
|
}
|
||||||
@ -566,20 +557,20 @@ where
|
|||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod test {
|
mod test {
|
||||||
use super::types::{
|
use super::types::{
|
||||||
Ampere, Coulomb, CubicMeter, Meter, ReciprocalMeter, Second, SquareMeter, Unit, Volt, Watt,
|
Ampere, Coulomb, CubicMetre, Metre, ReciprocalMetre, Second, SquareMetre, Unit, Volt, Watt,
|
||||||
};
|
};
|
||||||
use num_traits::{Num, One, Zero};
|
use num_traits::{Num, One, Zero};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn clone() {
|
fn clone() {
|
||||||
let m = Meter::new(2);
|
let m = Metre::new(2);
|
||||||
assert_eq!(m.clone(), m);
|
assert_eq!(m.clone(), m);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn ord() {
|
fn ord() {
|
||||||
let a = Meter::new(2);
|
let a = Metre::new(2);
|
||||||
let b = Meter::new(3);
|
let b = Metre::new(3);
|
||||||
assert!(a < b);
|
assert!(a < b);
|
||||||
assert!(b > a);
|
assert!(b > a);
|
||||||
assert!(a == a);
|
assert!(a == a);
|
||||||
@ -590,27 +581,27 @@ mod test {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn deref() {
|
fn deref() {
|
||||||
let m = Meter::new(2);
|
let m = Metre::new(2);
|
||||||
assert_eq!(*m, 2);
|
assert_eq!(*m, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn deref_mut() {
|
fn deref_mut() {
|
||||||
let mut m = Meter::new(2);
|
let mut m = Metre::new(2);
|
||||||
*m = 3;
|
*m = 3;
|
||||||
assert_eq!(*m, 3);
|
assert_eq!(*m, 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn neg() {
|
fn neg() {
|
||||||
let m = Meter::new(2);
|
let m = Metre::new(2);
|
||||||
assert_eq!(-m, Meter::new(-2));
|
assert_eq!(-m, Metre::new(-2));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn zero() {
|
fn zero() {
|
||||||
let z = Meter::zero();
|
let z = Metre::zero();
|
||||||
assert_eq!(z, Meter::new(0));
|
assert_eq!(z, Metre::new(0));
|
||||||
assert!(z.is_zero());
|
assert!(z.is_zero());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -627,89 +618,89 @@ mod test {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn add() {
|
fn add() {
|
||||||
let m = Meter::new(2);
|
let m = Metre::new(2);
|
||||||
assert_eq!(m + m, Meter::new(4));
|
assert_eq!(m + m, Metre::new(4));
|
||||||
assert_eq!(m + m + m, Meter::new(6));
|
assert_eq!(m + m + m, Metre::new(6));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn add_assign() {
|
fn add_assign() {
|
||||||
let mut m = Meter::new(2);
|
let mut m = Metre::new(2);
|
||||||
m += m;
|
m += m;
|
||||||
assert_eq!(m, Meter::new(4));
|
assert_eq!(m, Metre::new(4));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn sub() {
|
fn sub() {
|
||||||
let m = Meter::new(2);
|
let m = Metre::new(2);
|
||||||
assert_eq!(m - m, Meter::new(0));
|
assert_eq!(m - m, Metre::new(0));
|
||||||
assert_eq!(m - m - m, Meter::new(-2));
|
assert_eq!(m - m - m, Metre::new(-2));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn sub_assign() {
|
fn sub_assign() {
|
||||||
let mut m = Meter::new(2);
|
let mut m = Metre::new(2);
|
||||||
m -= m;
|
m -= m;
|
||||||
assert_eq!(m, Meter::new(0));
|
assert_eq!(m, Metre::new(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn mul() {
|
fn mul() {
|
||||||
let m = Meter::new(2);
|
let m = Metre::new(2);
|
||||||
assert_eq!(m * m, SquareMeter::new(4));
|
assert_eq!(m * m, SquareMetre::new(4));
|
||||||
assert_eq!(m * m * m, CubicMeter::new(8));
|
assert_eq!(m * m * m, CubicMetre::new(8));
|
||||||
let s = Second::new(1);
|
let s = Second::new(1);
|
||||||
let a = Ampere::new(2);
|
let a = Ampere::new(2);
|
||||||
assert_eq!(s * a, Coulomb::new(2));
|
assert_eq!(s * a, Coulomb::new(2));
|
||||||
let v = Volt::new(2);
|
let v = Volt::new(2);
|
||||||
assert_eq!(v * a, Watt::new(4));
|
assert_eq!(v * a, Watt::new(4));
|
||||||
assert_eq!(m * 2, Meter::new(4));
|
assert_eq!(m * 2, Metre::new(4));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn mul_assign() {
|
fn mul_assign() {
|
||||||
let mut m = Meter::new(2);
|
let mut m = Metre::new(2);
|
||||||
m *= 2;
|
m *= 2;
|
||||||
assert_eq!(m, Meter::new(4));
|
assert_eq!(m, Metre::new(4));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn div() {
|
fn div() {
|
||||||
let m = Meter::new(2);
|
let m = Metre::new(2);
|
||||||
assert_eq!(m / m, Unit::new(1));
|
assert_eq!(m / m, Unit::new(1));
|
||||||
assert_eq!(m / m / m, ReciprocalMeter::new(0));
|
assert_eq!(m / m / m, ReciprocalMetre::new(0));
|
||||||
let c = Coulomb::new(4);
|
let c = Coulomb::new(4);
|
||||||
let a = Ampere::new(2);
|
let a = Ampere::new(2);
|
||||||
assert_eq!(c / a, Second::new(2));
|
assert_eq!(c / a, Second::new(2));
|
||||||
let w = Watt::new(2);
|
let w = Watt::new(2);
|
||||||
assert_eq!(w / a, Volt::new(1));
|
assert_eq!(w / a, Volt::new(1));
|
||||||
assert_eq!(m / 2, Meter::new(1));
|
assert_eq!(m / 2, Metre::new(1));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn div_assign() {
|
fn div_assign() {
|
||||||
let mut m = Meter::new(2);
|
let mut m = Metre::new(2);
|
||||||
m /= 2;
|
m /= 2;
|
||||||
assert_eq!(m, Meter::new(1));
|
assert_eq!(m, Metre::new(1));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn rem() {
|
fn rem() {
|
||||||
let m = Meter::new(2);
|
let m = Metre::new(2);
|
||||||
assert_eq!(m % m, Unit::new(0));
|
assert_eq!(m % m, Unit::new(0));
|
||||||
assert_eq!(m / m % m, ReciprocalMeter::new(1));
|
assert_eq!(m / m % m, ReciprocalMetre::new(1));
|
||||||
let c = Coulomb::new(4);
|
let c = Coulomb::new(4);
|
||||||
let a = Ampere::new(2);
|
let a = Ampere::new(2);
|
||||||
assert_eq!(c % a, Second::new(0));
|
assert_eq!(c % a, Second::new(0));
|
||||||
let w = Watt::new(2);
|
let w = Watt::new(2);
|
||||||
assert_eq!(w % a, Volt::new(0));
|
assert_eq!(w % a, Volt::new(0));
|
||||||
assert_eq!(m % 2, Meter::new(0));
|
assert_eq!(m % 2, Metre::new(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn rem_assign() {
|
fn rem_assign() {
|
||||||
let mut m = Meter::new(2);
|
let mut m = Metre::new(2);
|
||||||
m %= 2;
|
m %= 2;
|
||||||
assert_eq!(m, Meter::new(0));
|
assert_eq!(m, Metre::new(0));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
50
src/types.rs
50
src/types.rs
@ -6,7 +6,7 @@ pub type Unit<T> = SiUnit<T, Z0, Z0, Z0, Z0, Z0, Z0, Z0>;
|
|||||||
/// time
|
/// time
|
||||||
pub type Second<T> = SiUnit<T, P1, Z0, Z0, Z0, Z0, Z0, Z0>;
|
pub type Second<T> = SiUnit<T, P1, Z0, Z0, Z0, Z0, Z0, Z0>;
|
||||||
/// length
|
/// length
|
||||||
pub type Meter<T> = SiUnit<T, Z0, P1, Z0, Z0, Z0, Z0, Z0>;
|
pub type Metre<T> = SiUnit<T, Z0, P1, Z0, Z0, Z0, Z0, Z0>;
|
||||||
/// mass
|
/// mass
|
||||||
pub type Kilogram<T> = SiUnit<T, Z0, Z0, P1, Z0, Z0, Z0, Z0>;
|
pub type Kilogram<T> = SiUnit<T, Z0, Z0, P1, Z0, Z0, Z0, Z0>;
|
||||||
/// electric current
|
/// electric current
|
||||||
@ -64,43 +64,43 @@ pub type Katal<T> = SiUnit<T, N1, Z0, Z0, Z0, Z0, P1, Z0>;
|
|||||||
|
|
||||||
// Derived units without special names
|
// Derived units without special names
|
||||||
/// area
|
/// area
|
||||||
pub type SquareMeter<T> = SiUnit<T, Z0, P2, Z0, Z0, Z0, Z0, Z0>;
|
pub type SquareMetre<T> = SiUnit<T, Z0, P2, Z0, Z0, Z0, Z0, Z0>;
|
||||||
/// volume
|
/// volume
|
||||||
pub type CubicMeter<T> = SiUnit<T, Z0, P3, Z0, Z0, Z0, Z0, Z0>;
|
pub type CubicMetre<T> = SiUnit<T, Z0, P3, Z0, Z0, Z0, Z0, Z0>;
|
||||||
/// speed, velocity
|
/// speed, velocity
|
||||||
pub type MeterPerSecond<T> = SiUnit<T, N1, P1, Z0, Z0, Z0, Z0, Z0>;
|
pub type MetrePerSecond<T> = SiUnit<T, N1, P1, Z0, Z0, Z0, Z0, Z0>;
|
||||||
/// acceleration
|
/// acceleration
|
||||||
pub type MeterPerSquareSecond<T> = SiUnit<T, N2, P1, Z0, Z0, Z0, Z0, Z0>;
|
pub type MetrePerSquareSecond<T> = SiUnit<T, N2, P1, Z0, Z0, Z0, Z0, Z0>;
|
||||||
/// wavenumber, vergence
|
/// wavenumber, vergence
|
||||||
pub type ReciprocalMeter<T> = SiUnit<T, Z0, N1, Z0, Z0, Z0, Z0, Z0>;
|
pub type ReciprocalMetre<T> = SiUnit<T, Z0, N1, Z0, Z0, Z0, Z0, Z0>;
|
||||||
/// density, mass concentration
|
/// density, mass concentration
|
||||||
pub type KilogramPerCubicMeter<T> = SiUnit<T, Z0, N3, P1, Z0, Z0, Z0, Z0>;
|
pub type KilogramPerCubicMetre<T> = SiUnit<T, Z0, N3, P1, Z0, Z0, Z0, Z0>;
|
||||||
/// surface density
|
/// surface density
|
||||||
pub type KilogramPerSquareMeter<T> = SiUnit<T, Z0, N2, P1, Z0, Z0, Z0, Z0>;
|
pub type KilogramPerSquareMetre<T> = SiUnit<T, Z0, N2, P1, Z0, Z0, Z0, Z0>;
|
||||||
/// specific density
|
/// specific density
|
||||||
pub type CubicMeterPerKilogram<T> = SiUnit<T, Z0, P3, N1, Z0, Z0, Z0, Z0>;
|
pub type CubicMetrePerKilogram<T> = SiUnit<T, Z0, P3, N1, Z0, Z0, Z0, Z0>;
|
||||||
/// current density
|
/// current density
|
||||||
pub type AmperePerSquareMeter<T> = SiUnit<T, Z0, N2, Z0, P1, Z0, Z0, Z0>;
|
pub type AmperePerSquareMetre<T> = SiUnit<T, Z0, N2, Z0, P1, Z0, Z0, Z0>;
|
||||||
/// magnetic field strength
|
/// magnetic field strength
|
||||||
pub type AmperePerMeter<T> = SiUnit<T, Z0, N1, Z0, P1, Z0, Z0, Z0>;
|
pub type AmperePerMetre<T> = SiUnit<T, Z0, N1, Z0, P1, Z0, Z0, Z0>;
|
||||||
/// concentration
|
/// concentration
|
||||||
pub type MolePerCubicMeter<T> = SiUnit<T, Z0, N3, Z0, Z0, Z0, P1, Z0>;
|
pub type MolePerCubicMetre<T> = SiUnit<T, Z0, N3, Z0, Z0, Z0, P1, Z0>;
|
||||||
/// luminance
|
/// luminance
|
||||||
pub type CandelaPerSquareMeter<T> = SiUnit<T, Z0, N2, Z0, Z0, Z0, Z0, P1>;
|
pub type CandelaPerSquareMetre<T> = SiUnit<T, Z0, N2, Z0, Z0, Z0, Z0, P1>;
|
||||||
|
|
||||||
// Derived units including special names
|
// Derived units including special names
|
||||||
/// dynamic viscosity
|
/// dynamic viscosity
|
||||||
pub type PascalSecond<T> = SiUnit<T, N1, N1, P1, Z0, Z0, Z0, Z0>;
|
pub type PascalSecond<T> = SiUnit<T, N1, N1, P1, Z0, Z0, Z0, Z0>;
|
||||||
/// moment of force
|
/// moment of force
|
||||||
pub type NewtonMeter<T> = SiUnit<T, N2, P2, P1, Z0, Z0, Z0, Z0>;
|
pub type NewtonMetre<T> = SiUnit<T, N2, P2, P1, Z0, Z0, Z0, Z0>;
|
||||||
/// surface tension
|
/// surface tension
|
||||||
pub type NewtonPerMeter<T> = SiUnit<T, N2, Z0, P1, Z0, Z0, Z0, Z0>;
|
pub type NewtonPerMetre<T> = SiUnit<T, N2, Z0, P1, Z0, Z0, Z0, Z0>;
|
||||||
/// angular velocity, angular frequency
|
/// angular velocity, angular frequency
|
||||||
pub type RadianPerSecond<T> = SiUnit<T, N1, Z0, Z0, Z0, Z0, Z0, Z0>;
|
pub type RadianPerSecond<T> = SiUnit<T, N1, Z0, Z0, Z0, Z0, Z0, Z0>;
|
||||||
/// angular acceleration
|
/// angular acceleration
|
||||||
pub type RadianPerSquareSecond<T> = SiUnit<T, N2, Z0, Z0, Z0, Z0, Z0, Z0>;
|
pub type RadianPerSquareSecond<T> = SiUnit<T, N2, Z0, Z0, Z0, Z0, Z0, Z0>;
|
||||||
/// heat flux density, irradiance
|
/// heat flux density, irradiance
|
||||||
pub type WattPerSquareMeter<T> = SiUnit<T, N3, Z0, P1, Z0, Z0, Z0, Z0>;
|
pub type WattPerSquareMetre<T> = SiUnit<T, N3, Z0, P1, Z0, Z0, Z0, Z0>;
|
||||||
/// entropy, heat capacity
|
/// entropy, heat capacity
|
||||||
pub type JoulePerKelvin<T> = SiUnit<T, N2, P2, P1, Z0, N1, Z0, Z0>;
|
pub type JoulePerKelvin<T> = SiUnit<T, N2, P2, P1, Z0, N1, Z0, Z0>;
|
||||||
/// specific heat capacity, specific entropy
|
/// specific heat capacity, specific entropy
|
||||||
@ -108,19 +108,19 @@ pub type JoulePerKilogramKelvin<T> = SiUnit<T, N2, P2, Z0, Z0, N1, Z0, Z0>;
|
|||||||
/// specific energy
|
/// specific energy
|
||||||
pub type JoulePerKilogram<T> = SiUnit<T, N2, P2, Z0, Z0, Z0, Z0, Z0>;
|
pub type JoulePerKilogram<T> = SiUnit<T, N2, P2, Z0, Z0, Z0, Z0, Z0>;
|
||||||
/// themal conductivity
|
/// themal conductivity
|
||||||
pub type WattPerMeterKelvin<T> = SiUnit<T, N3, P1, P1, Z0, N1, Z0, Z0>;
|
pub type WattPerMetreKelvin<T> = SiUnit<T, N3, P1, P1, Z0, N1, Z0, Z0>;
|
||||||
/// energy density
|
/// energy density
|
||||||
pub type JoulePerCubicMeter<T> = SiUnit<T, N2, N1, P1, Z0, Z0, Z0, Z0>;
|
pub type JoulePerCubicMetre<T> = SiUnit<T, N2, N1, P1, Z0, Z0, Z0, Z0>;
|
||||||
/// electric field strength
|
/// electric field strength
|
||||||
pub type VoltPerMeter<T> = SiUnit<T, N3, P1, P1, N1, Z0, Z0, Z0>;
|
pub type VoltPerMetre<T> = SiUnit<T, N3, P1, P1, N1, Z0, Z0, Z0>;
|
||||||
/// electric charge density
|
/// electric charge density
|
||||||
pub type CoulombPerCubicMeter<T> = SiUnit<T, P1, N3, Z0, P1, Z0, Z0, Z0>;
|
pub type CoulombPerCubicMetre<T> = SiUnit<T, P1, N3, Z0, P1, Z0, Z0, Z0>;
|
||||||
/// surface charge density, electirc flusx density, electric displacement
|
/// surface charge density, electirc flusx density, electric displacement
|
||||||
pub type CoulombPerSquareMeter<T> = SiUnit<T, P1, N2, Z0, P1, Z0, Z0, Z0>;
|
pub type CoulombPerSquareMetre<T> = SiUnit<T, P1, N2, Z0, P1, Z0, Z0, Z0>;
|
||||||
/// permittivity
|
/// permittivity
|
||||||
pub type FaradPerMeter<T> = SiUnit<T, P4, N3, N1, P2, Z0, Z0, Z0>;
|
pub type FaradPerMetre<T> = SiUnit<T, P4, N3, N1, P2, Z0, Z0, Z0>;
|
||||||
/// permeability
|
/// permeability
|
||||||
pub type HenryPerMeter<T> = SiUnit<T, N2, P1, P1, N2, Z0, Z0, Z0>;
|
pub type HenryPerMetre<T> = SiUnit<T, N2, P1, P1, N2, Z0, Z0, Z0>;
|
||||||
/// molar energy
|
/// molar energy
|
||||||
pub type JoulePerMole<T> = SiUnit<T, N2, P2, P1, Z0, Z0, N1, Z0>;
|
pub type JoulePerMole<T> = SiUnit<T, N2, P2, P1, Z0, Z0, N1, Z0>;
|
||||||
/// molar entropy, molar heat capacity
|
/// molar entropy, molar heat capacity
|
||||||
@ -132,6 +132,6 @@ pub type GrayPerSecond<T> = SiUnit<T, N3, P2, Z0, Z0, Z0, Z0, Z0>;
|
|||||||
/// radiant intensity
|
/// radiant intensity
|
||||||
pub type WattPerSteradian<T> = SiUnit<T, N3, P2, P1, Z0, Z0, Z0, Z0>;
|
pub type WattPerSteradian<T> = SiUnit<T, N3, P2, P1, Z0, Z0, Z0, Z0>;
|
||||||
/// radiance
|
/// radiance
|
||||||
pub type WattPerSquareMeterSteradian<T> = SiUnit<T, N3, Z0, P1, Z0, Z0, Z0, Z0>;
|
pub type WattPerSquareMetreSteradian<T> = SiUnit<T, N3, Z0, P1, Z0, Z0, Z0, Z0>;
|
||||||
/// catalytic activity concentration
|
/// catalytic activity concentration
|
||||||
pub type KatalPerCubicMeter<T> = SiUnit<T, N1, N3, Z0, Z0, Z0, P1, Z0>;
|
pub type KatalPerCubicMetre<T> = SiUnit<T, N1, N3, Z0, Z0, Z0, P1, Z0>;
|
||||||
|
Loading…
Reference in New Issue
Block a user