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::{Meters, Kilometers}, time::{Hours, Seconds}};
fn main() { // use the struct directly let m = Meters(72_000.0); // or use the factory-function 'new(...)' let h = Hours::new(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.
Rust has a build-tool called cargo
, which can be used to run everything except scripts in scripts/
.
```zsh
./scripts/build.sh
cargo run --example basic ```
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.