1个不稳定版本
新 0.1.0 | 2024年8月23日 |
---|
#14 in #fraction
27KB
454 行
单位区间
一个小型crate,提供数值值的类型级约束。
特性
- 在[0, 1]内值的类型级表示
- 已检查和夹紧的算术运算
- 到和从底层数值类型的转换
- 超出区间值的错误类型
- 通过泛型支持各种数值类型
文档
有关示例和API信息,请查看文档。
动机
这个crate的产生是为了以一种过度工程化的方式在类型级别上处理分数,用于一个比率类型。
lib.rs
:
一个小型crate,用于处理单位区间内的数字。
这个crate目前只提供了UnitInterval
类型,它表示一个约束在0和1之间(含)的闭区间的数字。它提供了在此范围内值操作的、边界检查和实用工具。
快速入门
要开始,可以使用许多构造函数方法之一创建一个UnitInterval
use unit_interval::UnitInterval;
// Create a UnitInterval, panics if out of bounds
let a = UnitInterval::new(0.5);
// Create a UnitInterval, returns a Result
let b = UnitInterval::new_checked(0.75).unwrap();
// Create a UnitInterval, clamping the value to [0, 1]
let c = UnitInterval::new_clamped(1.5);
assert_eq!(c.into_inner(), 1.0);
对UnitInterval
值执行操作
use unit_interval::UnitInterval;
let a = UnitInterval::new(0.3);
let b = UnitInterval::new(0.5);
// Multiplication always stays within [0, 1]
let product = a * b;
assert_eq!(product.into_inner(), 0.15);
// Other operations may need checking or clamping
let sum = a.checked_add(b).unwrap();
let difference = a.clamped_sub(b);
依赖关系
~155KB