diff --git a/Cargo.toml b/Cargo.toml index 6131b0c..872ed09 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,7 +16,7 @@ members = [ ] [workspace.package] -version = "0.4.1" +version = "0.4.2" edition = "2021" repository = "https://git.bfpower.io/BFPOWER/physical" readme = "README.md" diff --git a/src/quantity/mod.rs b/src/quantity/mod.rs index b8255ff..1ab7f87 100644 --- a/src/quantity/mod.rs +++ b/src/quantity/mod.rs @@ -2,6 +2,7 @@ mod irradiance; mod resistance; mod temperature; mod voltage; +mod volume; mod volume_rate; mod pressure; @@ -12,6 +13,7 @@ pub use irradiance::*; pub use resistance::*; pub use temperature::*; pub use voltage::*; +pub use volume::*; pub use volume_rate::*; pub use pressure::*; diff --git a/src/quantity/temperature.rs b/src/quantity/temperature.rs index 745fd49..60bef1d 100644 --- a/src/quantity/temperature.rs +++ b/src/quantity/temperature.rs @@ -21,7 +21,7 @@ impl Kelvins { } } -//----- Deci Kelvins ---------------------------------- +//----- Decikelvins ---------------------------------- quantity_type! {DeciKelvins, "dK"} impl DeciKelvins { diff --git a/src/quantity/voltage.rs b/src/quantity/voltage.rs index f7e12ed..f086d49 100644 --- a/src/quantity/voltage.rs +++ b/src/quantity/voltage.rs @@ -14,7 +14,7 @@ impl Volts { } } -//----- Milli Volts ---------------------------------- +//----- Millivolts ---------------------------------- quantity_type! {MilliVolts, "mV"} impl MilliVolts { diff --git a/src/quantity/volume.rs b/src/quantity/volume.rs new file mode 100644 index 0000000..a482487 --- /dev/null +++ b/src/quantity/volume.rs @@ -0,0 +1,43 @@ +use crate::quantity::{Quantity, Value}; +use generate_quantity::quantity_type; + +use crate::quantity::MILLI; + +//----- Liters ---------------------------------- +quantity_type! {Liters, "L"} + +impl Liters { + #[inline] + pub fn to_milli_liters(self) -> MilliLiters { + let multiplier = V::from_u16(MILLI).unwrap(); + MilliLiters(self.0 * multiplier) + } +} + +//----- Milliliters ---------------------------------- +quantity_type! {MilliLiters, "mL"} + +impl MilliLiters { + #[inline] + pub fn to_liters(self) -> MilliLiters { + let divisor = V::from_u16(MILLI).unwrap(); + MilliLiters(self.0 / divisor) + } +} + +// --------------------------------------------------------------------------------------------------------------------- +// ----- Tests ------------------------ +// --------------------------------------------------------------------------------------------------------------------- +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn convert_u32() { + let liters: Liters = 12.liters(); + let milli_liters: MilliLiters = 12_000.milli_liters(); + + assert_eq!(liters.0, milli_liters.to_liters().0); + assert_eq!(milli_liters.0, liters.to_milli_liters().0); + } +}