← 中文资源

简体中文版本

Cargo 报 feature 未找到或依赖特性不存在

通过匹配 Cargo.toml 中声明的 features 与依赖特性名,修复 Cargo 特性错误。

阅读英文原文

症状

Cargo 报某包的 feature 不存在,或与特性相关的版本选择错误。特性名可能拼错、在依赖升级中被重命名,或被从未声明它的 crate 引用。该失败常只在特定特性集合下出现,指向特性图而非代码。

诊断

读取确切的特性错误;用 cargo metadata 列出可用特性;用 cargo tree -e features 查看谁启用了什么。

cargo build --features foo 2>&1 | head -20

根因

所请求的特性未被目标包声明,原因是拼写错误、依赖升级中被重命名,或本地 crate 从未暴露它。

修复

把特性名与包声明对齐;在你的 Cargo.toml 中声明特性;升级后更新被重命名的特性;作为特性使用的可选依赖必须先如此声明。

验证

以目标特性集构建确认成功,并确认该特性确实启用了预期的依赖或代码路径。构建成功且特性生效才算修好。

常见陷阱

用 default-features = false 后忘记重新启用必需特性会导致功能缺失;应显式列出所需特性。