7 releases (stable)
2.0.0 | Oct 10, 2020 |
---|---|
1.1.0 | May 18, 2020 |
1.0.3 | Mar 27, 2020 |
1.0.2 | Mar 26, 2020 |
0.0.0 | Mar 25, 2020 |
#741 in Math
26 downloads per month
Used in osmgraphing
25KB
665 lines
Units kept small and simple
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:
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
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/
.
# 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.