gpt4 book ai didi

rust - 在 rust 条件编译中的其他情况

转载 作者:行者123 更新时间:2023-12-03 11:35:12 25 4
gpt4 key购买 nike

我怎样才能让某些代码仅在没有 cfg block 匹配时才被编译?例如这样的事情:

#IF NUM == 1
//something
#ELSE IF NUM == 2
// something
#ELSE
// no case match, panic!
#ENDIF

最佳答案

例如手动

#[cfg(thing1)]
// something
#[cfg(all(not(thing1), thing2))]
// something
#[cfg(all(not(thing1), not(thing2)))]
// no case

或者,在一个函数内,如果你的“东西”在任何情况下都是可编译的,你可以使用 cfg!。由于它的计算结果为文字,因此优化器很有可能会去除不匹配的位:

if cfg!(thing1) {
// something
} else if cfg!(thing2) {
// something
} else {
panic!();
}

尽管compile_error会比 panic 更有意义。

还有a cfg-if crate更符合人体工程学。

有关该主题的更多信息,请参阅文章 Yak shaving conditional compilation in Rust其中扩展并讨论了各种方法。

关于rust - 在 rust 条件编译中的其他情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64096426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com