#lookup-tables #table #values #ranged #check #constant #constrained

const_ranged_int

范围常量整数。对于具有约束值的查找表非常有用,可以避免二次边界检查。

9个版本

0.1.8 2024年4月29日
0.1.7 2024年4月26日

#591 in 算法

Apache-2.0

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());

无运行时依赖