内容提要
Rust 1.80将自动检查#[cfg]是否与预期的配置名称和值匹配,以帮助验证crate是否正确处理不同目标平台或功能的条件编译。这有助于捕捉开发过程中的潜在错误。Cargo还提供了新的指令cargo::rustc-check-cfg,用于检查自定义cfg。该功能无法禁用,但可以通过控制lints来控制。
关键要点
-
Rust 1.80将自动检查#[cfg]是否与预期的配置名称和值匹配。
-
此功能有助于验证crate是否正确处理不同目标平台或功能的条件编译。
-
Cargo提供了新的指令cargo::rustc-check-cfg,用于检查自定义cfg。
-
每次声明Cargo特性时,该特性会转换为传递给rustc的配置。
-
自定义cfg是指既不由rustc定义也不由Cargo特性定义的配置。
-
Cargo 1.80引入了cargo::rustc-check-cfg指令,确保自定义cfg被预期。
-
该功能无法禁用,但可以通过控制lints来管理。
-
unexpected_cfgs lint仅对本地包报告,不影响依赖项。
-
RUSTFLAGS环境变量的使用与之前相同,--cfg参数不会被检查。
-
目前没有其他方法可以在没有build.rs的情况下预期自定义cfg。
延伸问答
Rust 1.80的新特性是什么?
Rust 1.80将自动检查#[cfg]是否与预期的配置名称和值匹配。
如何使用cargo::rustc-check-cfg指令?
使用cargo::rustc-check-cfg指令可以检查自定义cfg,确保它们符合预期。
这个新功能对开发者有什么帮助?
该功能帮助开发者验证crate是否正确处理条件编译,捕捉潜在错误。
如何控制unexpected_cfgs lint?
虽然该功能无法禁用,但可以通过控制lints来管理,例如使用#![warn(unexpected_cfgs)]。
自定义cfg的定义是什么?
自定义cfg是指既不由rustc定义也不由Cargo特性定义的配置。
RUSTFLAGS环境变量如何与新功能交互?
RUSTFLAGS环境变量的使用与之前相同,--cfg参数不会被检查。