我正在使用一个为我生成一堆代码的库,而且它通常非常渴望生成我还没有使用的方法.在构建我的项目时,这会导致一堆嘈杂的警告.
该脚本在我的代码库中生成普通的.rs文件,然后我将其导入并调用,就像普通代码一样:
mod autogen_code;
pub use self::autogen_code::*;
Run Code Online (Sandbox Code Playgroud)
我不能#![allow(unused_whatever)]在生成的代码上使用,因为当我重建我的项目时,生成脚本会再次运行,任何更改都将消失.这些文件是.gitignore'd,并且在顶部有很多评论说"这是全部自动生成的.请勿触摸".
我不想在我的整个项目中允许使用未使用的东西,所以放在#![allow(unused_whatever)]我的箱子顶部也是一个非首发.
好处是生成的文件都有一个可预测的名称,所以我希望有一种方法可以告诉cargo/rustc不要为匹配特定文件名的文件发出警告.这可能吗?
She*_*ter 12
不,您不能使用文件名模式应用lints.
相反,你可以......
而不是使用的!#[allow(...)] 内部文件,使用#[allow(...)]的mod声明:
#[allow(dead_code)]
mod autogen;
Run Code Online (Sandbox Code Playgroud)修改生成步骤以更改文件.例如,运行而不是library-generator foo.input运行library-generator foo.input && sed -i '' '1s/^/#![allow(whatever)]/' myfile.rs.您也可以在纯Rust中执行此操作.由于"生成的文件都具有可预测的名称",您还可以通过这种方式找到所有文件并执行此转换.现在,每次重新生成文件时都会应用转换.
修改生成器本身以添加选项以限制输出的函数或添加allow设置.如果您遇到问题,其他人也可能会这样做.不妨为每个人解决它.
在某些情况下,您可以创建一个"垫片"模块,它可以执行您需要执行的操作,然后include!执行实际代码.这有点讨厌:
#![allow(...)]
include!("autogen_real.rs");
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
496 次 |
| 最近记录: |