如何在Rust工作区中统一管理#![feature(...)]注解?
为Rust工作区统一配置
#![feature(...)]标记的方法 当然可以通过单一位置完成统一配置,无需为每个crate单独添加#![feature(...)]属性,以下是两种可靠方案:
方案一:工作区全局配置文件
在工作区根目录的.cargo/config.toml(没有就新建)中添加rustflags配置,将需要启用的特性以编译参数形式传递给rustc:
[build] # 单个特性的配置 rustflags = ["--cfg", "feature=\"your_target_feature\""] # 多个特性的两种写法 # 写法1:逗号分隔 rustflags = ["--cfg", "feature=\"feature1,feature2\""] # 写法2:分开声明 rustflags = ["--cfg", "feature=\"feature1\"", "--cfg", "feature=\"feature2\""]
配置完成后,Cargo编译工作区内所有crate时,会自动将这些参数注入rustc,效果和在每个crate的入口文件开头添加#![feature(...)]完全一致。
方案二:临时环境变量配置
如果只是临时需要统一启用特性,无需修改配置文件,直接设置环境变量即可:
# Linux/macOS终端 export RUSTFLAGS="--cfg feature='your_target_feature'" # Windows PowerShell $env:RUSTFLAGS="--cfg feature='your_target_feature'"
注意事项
- 所有
#![feature(...)]标记的都是Rust不稳定特性,必须使用nightly版本的Rust工具链才能编译。 - 若某个crate需要单独覆盖全局配置,可在该crate的
Cargo.toml中单独添加rustflags配置,其优先级高于工作区全局配置:[build] rustflags = ["--cfg", "feature=\"override_feature\""]
内容的提问来源于stack exchange,提问作者ajp
相关产品推荐
相关产品推荐

