在C语言中,断言可以通过定义NDEBUG
而消失,因此我们倾向于编写如下内容:
const bool ok = my_function();
assert(ok);
但是,无论配置如何,Rust中的断言似乎总是存在于每种类型的构建中,因此认为更好的是:
let ok = my_function();
assert!(ok);
或者:
assert!(my_function());
答案 0 :(得分:5)
Rust中的断言似乎总是出现在每种类型的构建中
是的,assert!
始终存在,但是debug_assert!
仅在调试版本中启用。
什么被认为更好
这是基于意见的。做任何让你开心的事。我个人一直把副作用代码放在由于条件编译而消失的代码中,这比我想要的次数要多得多,因此,我宁愿将断言放在单独的一行。但是,当断言被断言时,这将导致未使用的变量警告。
更好的是,重新评估为什么在断言中有副作用;我敢打赌,这几乎总是一个坏主意。