Avatar ·

如何使用 Rust 中的 cfg 检查项目是以 debug 还是 release 模式构建的?

大家好!我刚开始学习 Rust,正在尝试理解条件编译。我需要根据项目是以 debug 还是 release 模式构建来执行不同的代码。例如,在 debug 模式下我想输出大量调试信息,而在 release 模式下只输出最少的日志。我知道在 C/C++ 中有像 `#ifdef DEBUG` 这样的宏,但在 Rust 中该怎么做呢? 我尝试过使用 `#[cfg(debug_assertions)]`,但不太明白它是如何工作的。以下是我的代码示例: ```rust fn main() { #[cfg(debug_assertions)] println!("Debug build"); #[cfg(not(debug_assertions))] println!("Release build"); } ``` 这段代码可以工作,但我听说 `debug_assertions` 在某些情况下可能表现不如预期。例如,如果我运行测试或基准测试呢?或者如果我使用 `--release` 构建,这能保证是 release 模式吗? 我还看到在 `cfg` 属性中提到了 `profile = "release"` 和 `profile = "debug"`。它们有什么区别?