症状
Cargo 报某包的 feature 不存在,或与特性相关的版本选择错误。特性名可能拼错、在依赖升级中被重命名,或被从未声明它的 crate 引用。该失败常只在特定特性集合下出现,指向特性图而非代码。
诊断
读取确切的特性错误;用 cargo metadata 列出可用特性;用 cargo tree -e features 查看谁启用了什么。
cargo build --features foo 2>&1 | head -20
根因
所请求的特性未被目标包声明,原因是拼写错误、依赖升级中被重命名,或本地 crate 从未暴露它。
修复
把特性名与包声明对齐;在你的 Cargo.toml 中声明特性;升级后更新被重命名的特性;作为特性使用的可选依赖必须先如此声明。
验证
以目标特性集构建确认成功,并确认该特性确实启用了预期的依赖或代码路径。构建成功且特性生效才算修好。
常见陷阱
用 default-features = false 后忘记重新启用必需特性会导致功能缺失;应显式列出所需特性。