1 个不稳定版本

0.1.0 2024年6月4日

#752 in 算法

MIT 许可证

46KB
1K SLoC

单元类型

不要在生产环境中使用! 这是一个学习项目,不打算用于生产。一些转换数字是GitHub Copilot自动填充的,尚未经过验证。

我还没有决定我会把这个项目做到什么程度。欢迎Fork或贡献。

unit_types crate是一个为Rust提供的维度感知类型系统。

示例

use unit_types::prelude::*; // brings in "unit"
use unit_types::Length;
let x = Length::Kilometers(1.0);
let y = Length::Meters(200.0);
assert_eq!(x - y, Length::Meters(800.0));
assert_eq!(x + y, Length::Meters(1200.0));

let z = 2.0 * (x + y); // should be in Kilometers
assert_eq!(z.value(), 2.4);
assert_eq!(z.to(unit::Meters).value(), 2400.0);

lib.rs:

单元名称都在unit命名空间下,以避免与其他名称冲突。单元名称来自各自的模块,并由lib.rs重新导出。在给定的维度模块中,单元枚举以DimensionUnit的形式定义。例如,长度模块有LengthUnit,时间模块有TimeUnit等。

无运行时依赖