9个版本
0.1.8 | 2024年4月29日 |
---|---|
0.1.7 | 2024年4月26日 |
#591 in 算法
8KB
95 行
const_ranged_int
const_ranged_int
是一个非常简单的Rust库,提供了安全的const值范围。它允许你在特定的(包含)范围内定义值。`new
`函数将assert
值是否在范围内,编译器会对此进行优化。相应的`value
`函数使用`std::hint::unreachable_unchecked()
来告诉编译器值在MIN..=MAX之间。
此库不使用任何不稳定功能。
此库并不雄心勃勃,主要设计用于具有约束值的查找表。例如,如果你有一个包含0..=7的值的查找表,并且使用这个值来在另一个数组中查找,这个库将让你避免第二次查找的边界检查。它还允许你将范围放入函数的合约中,并在以后避免范围检查。
重要说明:范围是包含的,而不是正常的Rust排他性范围表示法。这样做的原因是,如果使用maxint值,那么就无法表达maxint+1来指定范围。
使用方法
将此库添加到你的Cargo.toml
[dependencies]
ranged_const = "0.1"
然后,在你的Rust代码中
use const_ranged_int::ConstRangedU8;
// single constant (panics at compile time if values are out of range)
const VALUE: ConstRangedU8<1, 10> = ConstRangedU8::<1, 10>::new(5);
// array of constants (panics at compile time if values are out of range)
const CONTARRAY: [ConstRangedU8<1, 10>; 5] =
ConstRangedU8::<1, 10>::into_array([1, 2, 3, 4, 5]);
println!("{}", VALUE.value());