P.NAM.02 为 cargo feature 命名时不应含有无意义的占位词

【描述】

Cargo feature 命名时,不应带有无实际含义的的词语,比如使用abc命名来替代 use-abcwith-abc

这条原则经常出现在对 Rust 标准库进行 可选依赖(optional-dependency) 配置的 crate 上。

并且 Cargo 要求 features 应该是相互叠加的,所以像 no-abc 这种负向的 feature 命名实际上并不正确。

【反例】

# In Cargo.toml


[features]
// 不符合
default = ["use-std"]
std = []
// 不符合
no-abc=[]
// In lib.rs

#![cfg_attr(not(feature = "use-std"), no_std)]

【正例】

最简洁且正确的做法是:

# In Cargo.toml

[features]
// 符合
default = ["std"]
std = []
// In lib.rs

#![cfg_attr(not(feature = "std"), no_std)]