#constant #integer #level #non-negative #numbers #values #integral-constant

nightly tlnat

为 Rust 提供类型非负整数常量

3 个版本

使用旧的 Rust 2015

0.1.2 2016年1月7日
0.1.1 2016年1月6日
0.1.0 2016年1月6日

#5 in #non-negative

MIT 许可证

88KB
2K SLoC

tlnat

该项目实际上是一个临时的解决方案,直到 Rust 团队实现可以由值参数化的泛型。已经存在基础设施来定义其他类型的对象,但目前仅实现了从0到2048的自然数。

作者:Dalton Woodard 联系方式:[email protected] 许可证:MIT 许可证 (c) 2016 by Dalton Woodard

构建信息

tlnat 需要使用 feature(associated_consts)feature(const_fn) 功能。

示例用法

每个类型都有 _n 的格式,其中 n 是某个数 n >= 0,以及相关的常量 _n::VALUE,它满足 _n::VALUE == n

每个提供的类型都实现了相关的常量 VALUE 和函数

pub const fn evaluate () -> T;

该函数始终返回 VALUE

存在特性 IntegralConstantUnsignedIntegralConstant,后者实现了所有默认类型 _n

要定义新的此类类型,提供了宏 integral_constant!unsigned_integral_constant!,它们接受 ($name : ident, $val : expr) 作为参数;默认提供的类型是通过调用 unsigned_integral_constant!(_0, 0); 创建的。

已知问题

当前使用 _n::VALUE,尽管它确实是一个编译时常量,但用于指定固定大小数组的大小,例如 [u8; _n::VALUE] 不会编译。我相信这与在此问题中讨论的问题相关

https://github.com/rust-lang/rust/issues/25145

其他

如果你的项目使用了 tlnat,请随意发起一个 pull request 来添加到以下列表中。

使用 tlnat 的项目

无运行时依赖