15 个版本 (9 个破坏性更新)
使用旧的 Rust 2015
0.11.0 | 2022 年 2 月 6 日 |
---|---|
0.10.3 | 2018 年 10 月 11 日 |
0.10.2 | 2018 年 3 月 24 日 |
0.6.0 | 2017 年 10 月 14 日 |
0.2.1 | 2015 年 7 月 1 日 |
#37 在 值格式化
2,431 每月下载量
用于 16 个 Crates(11 个直接使用)
225KB
5.5K SLoC
Rust 的类型安全度量单位
为什么我应该关心?我已经有数字了...
与单位一起工作可能非常容易出错。如果一个人用英尺工作,另一个人用米工作,会发生什么?
在原始数值类型中做所有的数学运算可能是不安全的,甚至可能会很混乱。我们能做什么来帮助?
类型化测量来拯救!
在类型化测量中工作通过处理你真正关心的事情:度量单位,从而增加了安全性。
不同单位之间的转换简单,运算符重载允许你直接与测量一起工作。
目前可用的测量类型
- 加速度
- 角度
- 角速度
- 面积
- 电流
- 数据(字节等)
- 密度
- 能量
- 力
- 频率
- 长度
- 湿度
- 质量
- 功率
- 压力
- 电阻
- 速度
- 温度
- 扭矩
- 电压
- 体积
示例
在您的 Cargo.toml 中添加依赖...
[dependencies]
measurements = "0.11"
在您的代码...
extern crate measurements;
use measurements::{Length, Pressure, Temperature, Volume, Weight};
fn main() {
// Lengths!
let football_field = Length::from_yards(100.0);
let meters = football_field.as_meters();
println!("There are {} meters in a football field.", meters);
/// Temperatures!
let boiling_water = Temperature::from_celsius(100.0);
let fahrenheit = boiling_water.as_fahrenheit();
println!("Boiling water measures at {} degrees fahrenheit.", fahrenheit);
// Weights!
let metric_ton = Weight::from_metric_tons(1.0);
let united_states_tons = metric_ton.as_short_tons();
let united_states_pounds = metric_ton.as_pounds();
println!("One metric ton is {} U.S. tons - that's {} pounds!", united_states_tons, united_states_pounds);
// Volumes!
let gallon = Volume::from_gallons(1.0);
let pint = Volume::from_pints(1.0);
let beers = gallon / pint;
println!("A gallon of beer will pour {:.1} pints!", beers);
// Pressures!
let atmosphere = Pressure::from_atmospheres(1.0);
println!("Earth's atmosphere is usually {} psi", atmosphere.as_psi());
}
特性
该包包含一些特性,用于禁用或启用某些功能
std
- 启用 Rust 标准库提供的功能,而不是使用
libm
进行某些数学函数
- 启用 Rust 标准库提供的功能,而不是使用
- from_str
- 允许从字符串输入创建测量单位
参考资料
我绝不是测量或数学专家,我只是想在学习 Rust 的过程中做一些有用的事情。感谢以下网站及其作者为构建此库提供的优秀参考资料。
依赖关系
~0.4–1MB
~21K SLoC