我希望找到一种方法将类型约束移入某种包装器中。以Ada为例,您可能会看到类似于这样的代码:
type Element is Integer range 100 .. 1000;
定义了一个新类型Element
,它仍然是整数类型,但受到特定范围的限制。此外还有一种循环计算的方法mod
(非常有用)。
在Rust中,我一直在手动检查所有函数中是否符合这个条件,例如:
if x < 100 || x >= 1000 {
// throw some kind of error
}
然而,定义一个新的类型,在赋值时为我执行这个检查会更好,类似于整数默认情况下不会溢出。我知道我们没有继承,但也许有一些trait可以实现?
简而言之:我知道我的方法不是最佳实践,但标准替代方案是什么?