Units kept small and simple

Build Status nightly

Tag Crates.io Docs

Changelog Last commit

License

Welcome! :) Goal of this repo is to provide a simple and explicit implementation of units, without specialties or complex/implicit behaviour.

An example, including an example for forbidden implicit behaviour, is the following code-snippet:

```rust use kissunits::{ distance::{Kilometers, Meters}, time::{Hours, Seconds}, };

fn main() { // use the struct directly let m = Meters(72_000.0); let h = Hours(2.0);

// compile-error since resulting unit is not clear
println!("{}", m / h); // ERROR

// prints 36 km/h
let km = Kilometers::from(m);
println!("{} / {} = {}", km, h, km / h);

// prints 10 m/s
let s = Seconds::from(h);
println!("{} / {} = {}", m, s, m / s);

} ```

One could argue, that the resulting type could be specified explicitly, like

rust let mps: MetersPerSecond = m / h;

but this would lead to implicit rounding errors.

Setup and usage

Rust has a build-tool called cargo, which can be used to run everything except scripts in scripts/.

```zsh

Just executing some easy cargo-build-commands

./scripts/build.sh

Run the example

cargo run --example basic ```

Credits

The project started in the early 2020. This section honors the workers and helpers of this project, sorted by their last names.

Dominic Parga Cacheiro
has written these units.