我想仅在调试模式下使用一些代码来进行断言。我现在有这样的事情:
#[cfg(debug_assertions)]
let mut thing_initialized = false;
for ... {
if cfg!(debug_assertions) {
if expensive_check() { thing_initialized = true; }
}
}
if cfg!(debug_assertions) {
assert(thing_initialized);
}
但是当 cfg 为
false
时,我在所有行上都会出现此错误 thing_initialized
用于:
error[E0425]: cannot find value `thing_initialized` in this scope
解决这个问题的正确方法是什么?我可能可以编写一个 proc 宏并有条件地从中生成表达式,但似乎有点矫枉过正。有标准的 Rust 方法来实现这一点吗?或者已经有一个可以执行 proc-macro 功能的通用库?
不用下面的
if cfg!(debug_assertions)
,只需在块上使用 #[cfg]
:
#[cfg(debug_assertions)]
let mut thing_initialized = false;
for ... {
#[cfg(debug_assertions)]
{
if expensive_check() { thing_initialized = true; }
}
}
#[cfg(debug_assertions)]
{
assert(thing_initialized);
}