#interval #unit #numbers #fraction #no-alloc

无需std 单位区间

用于处理和约束单位区间内值的类型

1个不稳定版本

0.1.0 2024年8月23日

#14 in #fraction

MIT 许可证

27KB
454

单位区间

Crates.io Documentation

一个小型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