如何仅在没有 cfg 块匹配时才编译某些代码?例如这样的事情:
#IF NUM == 1
//something
#ELSE IF NUM == 2
// something
#ELSE
// no case match, panic!
#ENDIF
Run Code Online (Sandbox Code Playgroud)
手工例如
#[cfg(thing1)]
// something
#[cfg(all(not(thing1), thing2))]
// something
#[cfg(all(not(thing1), not(thing2)))]
// no case
Run Code Online (Sandbox Code Playgroud)
或者,在一个函数中,如果你的“东西”在任何情况下都是可编译的,你可以使用cfg!. 由于它计算为文字,因此优化器很有可能会删除不匹配的位:
if cfg!(thing1) {
// something
} else if cfg!(thing2) {
// something
} else {
panic!();
}
Run Code Online (Sandbox Code Playgroud)
虽然compile_error比恐慌更有意义。
还有一个cfg-if板条箱,可以放置更符合人体工程学的东西。
有关该主题的更多信息,请参阅文章Yak shaving 条件编译 Rust,它扩展并讨论了各种方法。
| 归档时间: |
|
| 查看次数: |
4115 次 |
| 最近记录: |