typed-measurements 0.7.5

A library for handling physical measurements with units.
Documentation
# measurements


**A Rust library for type-safe physical measurements, units, SI prefixes, and ranges.**

## Features


- **Type-safe measurements** with units and SI prefixes
- **One- and two-dimensional arrays** of measurements (`M1d`, `M2d`)
- **Range types** for measurements with min, max, and step (`RangedMeasurement`)
- **Percentage type** for expressing proportions
- **Prefix arithmetic** and conversions
- **Custom derive macro** for units of measurement (`Uom`)
- **Serde support** for serialization/deserialization
- **Parallel operations** on arrays (with `ndarray` + `rayon`)

## Example


```rust
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());
```

## Units


- Volt (`Volt`)
- Ampere (`Ampere`)
- Watt (`Watt`)
- Second (`Second`)
- Hertz (`Hertz`)
- *(Easily extensible via the `Uom` trait and derive macro)*

## Prefixes


Supports SI prefixes: Tera, Giga, Mega, Kilo, None, Milli, Micro, Nano, Femto.

## Ranges


```rust
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));
```

## Percentage


```rust
let p = percentage!(0.25);
assert_eq!(p.get_value(), 0.25);
```

## Crate Structure


- `measurement.rs` — Scalar measurements
- `m1d.rs`, `m2d.rs` — 1D and 2D arrays of measurements
- `ranged_measurement.rs` — Ranges for measurements
- `percentage.rs` — Percentage type and macro
- `prefix.rs` — SI prefix enum and arithmetic
- `uom.rs` — Units of measurement trait and types
- `prelude.rs` — Convenient re-exports

## Usage


Add to your `Cargo.toml`:

```toml
[dependencies]
measurements = { path = "." }
ndarray = { version = "0.15", features = ["serde", "rayon"] }
serde = { version = "1.0", features = ["derive"] }
```

## License


MIT

---

*See the documentation for more details and examples.*