Measurement

Adds quantities and units to rust to allow unit safe computation with zero cost abstraction.

Note: this crate uses an unstable feature which requires you to add #![feature(generic_const_exprs)] and use the nightly compiler.

How to use

Add the generic_const_exprs feature by adding #![feature(generic_const_exprs)] to your main.rs or lib.rs file.

```rust use measurement::si::{Length, Time, Velocity};

fn main() { let length = Length::new(20.0); // 20m let time = Time::new(5.0); // 5s

// you can specify the type of the quantity but you don't have to
// (see the example below)
let velocity: Velocity = length / time;

println!("{}", velocity.value);

} ```

```rust use measurement::si::{Mass, Acceleration};

fn main() { let mass = Mass::new(50.0); let acceleration = Acceleration::new(10.0);

let force = mass * acceleration;

println!("{}", force.value);

} ```

Define new quantities

currently only three dimensions are supported: Time, Length, Mass

```rust use measurement::{Quantity, Dimension};

pub type Length = Quantity>; pub type Mass = Quantity>; pub type Time = Quantity>; pub type ElectricalCurrent = Quantity>; pub type ThermodynamicTemperatur = Quantity>; pub type AmountOfSubstance = Quantity>; pub type LuminousIntensity = Quantity>;

pub type Velocity = Quantity>; pub type Acceleration = Quantity>; pub type Force = Quantity>;

```