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
88KB
 2K  SLoC
tlnat
该项目实际上是一个临时的解决方案,直到 Rust 团队实现可以由值参数化的泛型。已经存在基础设施来定义其他类型的对象,但目前仅实现了从0到2048的自然数。
作者:Dalton Woodard 联系方式:daltonmwoodard@gmail.com 许可证: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。
存在特性 IntegralConstant 和 UnsignedIntegralConstant,后者实现了所有默认类型 _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 的项目