我正在实现一个具有内部不变式的数据 struct ,我想通过测试来覆盖它.这个不变量是数据 struct 的一部分;因此,如果实现得当,数据 struct 用户的任何操作序列都不会违反它,但显然我仍然希望对其进行测试.
目前,我只是使用debug_assert!
来测试不变量,我的代码看起来像这样:
fn test_invariant(&self) -> bool {
// some computations
}
fn some_algorithm(&self) {
// some code
debug_assert!(self.test_invariant());
// more code
}
然而,由于test_invariant
在计算上有些昂贵,并且不应该在用户代码中触发,所以我希望断言只在我自己的测试中是活动的.此外,不变量是算法的一部分,因此断言不能很容易地移到单元测试中(您可以将其视为在实现堆排序的就地版本时测试堆不变量).在铁 rust 地区能做到吗?