#distance #meter #si-units #haversine #velocity

kissunits

不同的单位(如距离或坐标),保持小巧简单

7个版本 (稳定版)

2.0.0 2020年10月10日
1.1.0 2020年5月18日
1.0.3 2020年3月27日
1.0.2 2020年3月26日
0.0.0 2020年3月25日

#590 in 数学


用于 osmgraphing

Apache-2.0

25KB
665

单位 保持小巧简单

Build Status nightly

Tag Crates.io Docs

Changelog Last commit

License

欢迎! :) 此仓库的目标是提供一个简单且明确的单位实现,没有特殊功能或复杂/隐含的行为。

以下是一个示例,包括一个禁止隐式行为的示例代码片段

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);
}

有人可能会说,结果类型可以明确指定,例如

let mps: MetersPerSecond = m / h;

但这会导致隐式舍入误差。

设置和使用

Rust有一个名为cargo的构建工具,可以用来运行除了scripts/中的脚本之外的所有内容。

# Just executing some easy cargo-build-commands
./scripts/build.sh
# Run the example
cargo run --example basic

致谢

该项目始于2020年初。本节向该项目的工人和助手致敬,按姓氏排序。

Dominic Parga Cacheiro
编写了这些单位。

没有运行时依赖