目前,Rust中还没有实现编译时范围类型。您可以在internals.rust-lang.org上讨论并查看几个开放的GitHub问题: Range types for integers (or refinement types?) #671 和 Numerical Constrained Types #1621。有一个实验性的crate ranged_integers,它原型化了有范围的整数。
对于运行时实现,您可以定义自己的类型,例如:
struct RangedInt<const MIN: int, const MAX: int>(int);
同时,在操作员实现中添加检查。
for
循环,case
语句等。它们也参与编译时检查,并在安全时删除运行时检查。 - Zerte