| Crates.io | typed-measurements |
| lib.rs | typed-measurements |
| version | 0.7.8 |
| created_at | 2025-08-19 12:52:43.387623+00 |
| updated_at | 2026-01-14 10:22:56.537162+00 |
| description | A library for handling physical measurements with units. |
| homepage | |
| repository | https://github.com/Elements-SRL/measurements |
| max_upload_size | |
| id | 1801849 |
| size | 46,253 |
A Rust library for type-safe physical measurements, units, SI prefixes, and ranges.
M1d, M2d)RangedMeasurement)Uom)ndarray + rayon)use typed_measurements::prelude::*;
let voltage = Measurement::<Volt>::new(5.0, Prefix::Milli); // 5 mV
let current = Measurement::<Ampere>::new(2.0, Prefix::None); // 2 A
let arr = M1d::<Volt>::new(vec![1.0, 2.0, 3.0], Prefix::Milli);
println!("{:?}", arr.values());
Volt)Ampere)Watt)Second)Hertz)Uom trait and derive macro)Supports SI prefixes: Tera, Giga, Mega, Kilo, None, Milli, Micro, Nano, Femto.
let range = RangedMeasurement::<Volt>::new(0.0, 10.0, 0.5, Prefix::None);
assert!(range.is_in_range(Measurement::new(5.0, Prefix::None), None));
let p = percentage!(0.25);
assert_eq!(p.get_value(), 0.25);
measurement.rs — Scalar measurementsm1d.rs, m2d.rs — 1D and 2D arrays of measurementsranged_measurement.rs — Ranges for measurementspercentage.rs — Percentage type and macroprefix.rs — SI prefix enum and arithmeticuom.rs — Units of measurement trait and typesprelude.rs — Convenient re-exportsAdd to your Cargo.toml:
[dependencies]
measurements = { path = "." }
ndarray = { version = "0.15", features = ["serde", "rayon"] }
serde = { version = "1.0", features = ["derive"] }
MIT
See the documentation for more details and examples.