From e9ec7f42f0289b3a91ec0e047d420c37a9428f9d Mon Sep 17 00:00:00 2001 From: Kyle Johnson Date: Fri, 19 Jan 2024 07:28:07 +1000 Subject: [PATCH 1/4] Update si example --- examples/si.rs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/examples/si.rs b/examples/si.rs index 7a5bd0fd..7b703951 100644 --- a/examples/si.rs +++ b/examples/si.rs @@ -2,18 +2,23 @@ use uom::fmt::DisplayStyle::Abbreviation; use uom::si::f32::*; -use uom::si::length::{centimeter, kilometer, meter}; -use uom::si::time::second; +use uom::si::length::{centimeter, kilometer, meter, millimeter}; +use uom::si::time::{minute, second}; use uom::si::velocity::{kilometer_per_second, meter_per_second}; fn main() { // Setup length and time quantities using different units. let l1 = Length::new::(15.0); let l2 = Length::new::(10.0); - let t1 = Time::new::(50.0); + let t1 = Time::new::(60.0); let v1 = l1 / t1; //let error = l1 + t1; // error[E0308]: mismatched types + // Perfrom unit conversions + assert_eq!(l1.get::().round(), 1_500.0); + assert_eq!(l2.get::().round(), 100.0); + assert_eq!(t1.get::().round(), 1.0); + // Setup re-usable format arguments. let m = Length::format_args(meter, Abbreviation); let cm = Length::format_args(centimeter, Abbreviation); From 40c191a7d70ec3e091576ea60a13cf333dcab98f Mon Sep 17 00:00:00 2001 From: Kyle Johnson Date: Fri, 19 Jan 2024 07:46:09 +1000 Subject: [PATCH 2/4] Added extra details to readme --- README.md | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 47e65aa2..66920a6c 100644 --- a/README.md +++ b/README.md @@ -43,15 +43,32 @@ operations: extern crate uom; use uom::si::f32::*; -use uom::si::length::kilometer; -use uom::si::time::second; +use uom::si::length::{kilometer, meter}; +use uom::si::time::{minute, second}; +use uom::si::velocity::meter_per_second; fn main() { + // Create quantities let length = Length::new::(5.0); let time = Time::new::(15.0); let velocity/*: Velocity*/ = length / time; let _acceleration = calc_acceleration(velocity, time); //let error = length + time; // error[E0308]: mismatched types + + // Perfrom unit conversions + assert_eq!(length.get::(), 5_000.0); + assert_eq!(time.get::(), 0.25); + + // Print results of simple formulas using different output units. + let m = Length::format_args(meter, Abbreviation); // Re-usable format arguments for quantities. + let s = Time::format_args(second, Abbreviation); + + println!( + "{} / {} = {}", + m.with(length), + s.with(time), + velocity.into_format_args(meter_per_second, Abbreviation) // One-off quantity formatting. + ); } fn calc_acceleration(velocity: Velocity, time: Time) -> Acceleration { From eb13fe33151695cd47ec53eba977529af7c7d54f Mon Sep 17 00:00:00 2001 From: Kyle Johnson Date: Fri, 19 Jan 2024 07:47:13 +1000 Subject: [PATCH 3/4] Made readme more in line with si example --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 66920a6c..0b53b7ce 100644 --- a/README.md +++ b/README.md @@ -59,10 +59,11 @@ fn main() { assert_eq!(length.get::(), 5_000.0); assert_eq!(time.get::(), 0.25); - // Print results of simple formulas using different output units. - let m = Length::format_args(meter, Abbreviation); // Re-usable format arguments for quantities. + // Setup re-usable format arguments for quantities + let m = Length::format_args(meter, Abbreviation); let s = Time::format_args(second, Abbreviation); + // Print results of simple formulas using different output units. println!( "{} / {} = {}", m.with(length), From f295772b6d8dbeae7c300ad987b0646e5f9e01d0 Mon Sep 17 00:00:00 2001 From: Kyle Johnson Date: Fri, 19 Jan 2024 07:28:07 +1000 Subject: [PATCH 4/4] Added unit conversion examples Added extra details to readme Made readme more in line with si example --- README.md | 22 ++++++++++++++++++++-- examples/si.rs | 11 ++++++++--- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 47e65aa2..0b53b7ce 100644 --- a/README.md +++ b/README.md @@ -43,15 +43,33 @@ operations: extern crate uom; use uom::si::f32::*; -use uom::si::length::kilometer; -use uom::si::time::second; +use uom::si::length::{kilometer, meter}; +use uom::si::time::{minute, second}; +use uom::si::velocity::meter_per_second; fn main() { + // Create quantities let length = Length::new::(5.0); let time = Time::new::(15.0); let velocity/*: Velocity*/ = length / time; let _acceleration = calc_acceleration(velocity, time); //let error = length + time; // error[E0308]: mismatched types + + // Perfrom unit conversions + assert_eq!(length.get::(), 5_000.0); + assert_eq!(time.get::(), 0.25); + + // Setup re-usable format arguments for quantities + let m = Length::format_args(meter, Abbreviation); + let s = Time::format_args(second, Abbreviation); + + // Print results of simple formulas using different output units. + println!( + "{} / {} = {}", + m.with(length), + s.with(time), + velocity.into_format_args(meter_per_second, Abbreviation) // One-off quantity formatting. + ); } fn calc_acceleration(velocity: Velocity, time: Time) -> Acceleration { diff --git a/examples/si.rs b/examples/si.rs index 7a5bd0fd..7b703951 100644 --- a/examples/si.rs +++ b/examples/si.rs @@ -2,18 +2,23 @@ use uom::fmt::DisplayStyle::Abbreviation; use uom::si::f32::*; -use uom::si::length::{centimeter, kilometer, meter}; -use uom::si::time::second; +use uom::si::length::{centimeter, kilometer, meter, millimeter}; +use uom::si::time::{minute, second}; use uom::si::velocity::{kilometer_per_second, meter_per_second}; fn main() { // Setup length and time quantities using different units. let l1 = Length::new::(15.0); let l2 = Length::new::(10.0); - let t1 = Time::new::(50.0); + let t1 = Time::new::(60.0); let v1 = l1 / t1; //let error = l1 + t1; // error[E0308]: mismatched types + // Perfrom unit conversions + assert_eq!(l1.get::().round(), 1_500.0); + assert_eq!(l2.get::().round(), 100.0); + assert_eq!(t1.get::().round(), 1.0); + // Setup re-usable format arguments. let m = Length::format_args(meter, Abbreviation); let cm = Length::format_args(centimeter, Abbreviation);