如何允许dead_code和unused_imports只用于开发构建



未使用的导入和死代码警告是我在学习Rust时发现的最常见的,它们会在一段时间后变得很烦人(很短的一段时间,比如几秒钟(。尤其是当它们与编译器错误混合在一起时,因为这会使控制台难以读取。

我能够关闭这些警告:

#![allow(unused_imports)]
#![allow(dead_code)]

这将禁用所有版本的警告,但我希望为发布版本启用警告。

我试着这样禁用它们:

#![cfg(dev)]
#![allow(unused_imports)]
#![allow(dead_code)]

但是,这从发布版本中删除了整个Rust文件(不是我想要的(。

我尝试使用cfg_attr进行配置,但它对两种构建都没有影响。

#![cfg_attr(dev, allow(unused_imports))]
#![cfg_attr(dev, allow(dead_code))]

我已经在谷歌上搜索并阅读了StackOverflow上的所有相关问题,但无法理解。

dev不是条件编译支持的谓词,因此您的示例永远不会包含受影响的代码。据我所知,检测调试模式的最佳方法是使用#[cfg(debug_assertions)]。在我的测试中,#![cfg_attr(debug_assertions, allow(dead_code, unused_imports))]似乎可以为调试构建禁用lint,但在发布构建中启用它们。

您可以在Rust引用中看到一个受支持谓词的列表。

最新更新