use*_*039 1 debugging assert rust
在C中,断言可以通过定义消失NDEBUG,因此我们倾向于编写如下内容:
const bool ok = my_function();
assert(ok);
Run Code Online (Sandbox Code Playgroud)
但是,看起来Rust中的断言始终存在于每种类型的构建中,无论配置如何,因此更好的方法是:
let ok = my_function();
assert!(ok);
Run Code Online (Sandbox Code Playgroud)
要么:
assert!(my_function());
Run Code Online (Sandbox Code Playgroud)
看起来Rust中的断言始终存在于每种类型的构建中
是的,assert!始终存在,但debug_assert!仅在调试版本中启用.
什么被认为更好
这是基于意见的.做任何让你开心的事.我个人因为条件编译因代码编译而消失的代码中的副作用代码被咬了多次,所以我赞成将断言作为一个单独的行.但是,当断言编译时,这将导致未使用的变量警告.
更好的是,重新评估为什么你在断言中有副作用; 我打赌,这几乎总是一个坏主意.
| 归档时间: |
|
| 查看次数: |
278 次 |
| 最近记录: |