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 联系方式:[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
。
存在特性 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 的项目