【quantity】9 长度单位模块(length.rs)
代码是用Rust语言定义的一组长度单位类型,利用了泛型和类型别名来创建带不同SI前缀的长度量。下面是详细解释:
- 基础结构:
-
使用了Quantity<V, P, Meter>作为基础类型,表示一个带有值类型V、前缀P和单位Meter的量。
-
Meter是基本单位(米)。
- 通用长度类型:
-
Length<V, P = NoPrefix>:通用长度类型,默认无前缀(NoPrefix)。
-
V是数值类型(如f32, f64等)
-
P是SI前缀(默认为无前缀)
-
- 具体长度类型(通过类型别名定义):
-
Meters:基本米单位,无前缀
-
Kilometers:千米(kilo-前缀,10³倍)
-
Centimeters:厘米(centi-前缀,10⁻²倍)
-
Millimeters:毫米(milli-前缀,10⁻³倍)
-
Micrometers:微米(micro-前缀,10⁻⁶倍)
-
Nanometers:纳米(nano-前缀,10⁻⁹倍)
- 设计特点:
-
使用Rust的类型系统在编译期保证单位正确性
-
通过泛型V支持不同数值类型(如f32/f64)
-
前缀作为类型参数(如Kilo, Milli)实现类型安全转换
-
注释包含中英文,说明是国际化项目
这种设计常用于科学计算/工程领域,可以在编译期防止单位混淆错误(比如意外地将毫米当作米使用)。使用时类似:let length: Millimeters = Millimeters::new(500.0);