如何在Rust中强制校验Cargo.toml定义的feature拼写正确性
校验feature拼写错误的可用方案
方案1:启用Rust内置unexpected_cfgs lint(官方原生支持,推荐)
从Rust 1.60 + Cargo 1.71版本开始,你可以通过简单配置实现编译期自动校验:
- 在项目根目录创建
.cargo/config.toml,添加如下配置:
[build] rustflags = ["--check-cfg=cfg(feature)"]
该配置会让Cargo自动把Cargo.toml中定义的所有feature同步给编译器,无需手动罗列feature列表。
- 你可以在代码根文件(
src/lib.rs/src/main.rs)顶部添加如下配置,将非法feature的提示升级为编译错误:
#![deny(unexpected_cfgs)]
配置完成后,只要代码中出现Cargo.toml未定义的feature字符串,编译会直接失败,精准定位拼写错误。
方案2:使用cargo-deny工具做全链路校验
如果你需要更严格的feature管理规则,可以使用第三方审计工具cargo-deny:
- 执行命令安装工具:
cargo install cargo-deny - 在项目根目录添加
deny.toml配置文件,开启feature合法性校验规则 - 执行
cargo deny check features即可扫描全项目所有未定义的feature引用。
开发阶段实时提示
如果你使用Rust Analyzer作为编辑器的Rust支持插件,它默认就会实时检测未定义的feature,拼写错误的字符串会在编辑器中直接标红,开发阶段就能提前发现问题。
内容的提问来源于stack exchange,提问作者Peter Varo
相关产品推荐
相关产品推荐

