#measurement #length #temperature #volume #weight

无 std measurements

轻松处理公制、英制和其他测量!类型:长度、温度、重量、体积、压力

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值格式化

Download history 1109/week @ 2024-03-14 1815/week @ 2024-03-21 1413/week @ 2024-03-28 1249/week @ 2024-04-04 2235/week @ 2024-04-11 1505/week @ 2024-04-18 1647/week @ 2024-04-25 1475/week @ 2024-05-02 1098/week @ 2024-05-09 2006/week @ 2024-05-16 1493/week @ 2024-05-23 1194/week @ 2024-05-30 547/week @ 2024-06-06 581/week @ 2024-06-13 745/week @ 2024-06-20 448/week @ 2024-06-27

2,431 每月下载量
用于 16 个 Crates(11 个直接使用)

MIT 许可证

225KB
5.5K SLoC

Rust 的类型安全度量单位

Build Status

为什么我应该关心?我已经有数字了...

与单位一起工作可能非常容易出错。如果一个人用英尺工作,另一个人用米工作,会发生什么?

在原始数值类型中做所有的数学运算可能是不安全的,甚至可能会很混乱。我们能做什么来帮助?

类型化测量来拯救!

在类型化测量中工作通过处理你真正关心的事情:度量单位,从而增加了安全性。

不同单位之间的转换简单,运算符重载允许你直接与测量一起工作。

目前可用的测量类型

  • 加速度
  • 角度
  • 角速度
  • 面积
  • 电流
  • 数据(字节等)
  • 密度
  • 能量
  • 频率
  • 长度
  • 湿度
  • 质量
  • 功率
  • 压力
  • 电阻
  • 速度
  • 温度
  • 扭矩
  • 电压
  • 体积

示例

在您的 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 进行某些数学函数
  • from_str
    • 允许从字符串输入创建测量单位

参考资料

我绝不是测量或数学专家,我只是想在学习 Rust 的过程中做一些有用的事情。感谢以下网站及其作者为构建此库提供的优秀参考资料。

依赖关系

~0.4–1MB
~21K SLoC