Agent Skills
返回列表
💻

移除未使用的 Rust 依赖

开发编程 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/remove-unused-rust-dependencies-before-they-quietly-bloat-builds-and-reviews-with-cargo-machete。

技能介绍

先说清楚要解决的问题

Rust 项目的 Cargo.toml 很少是一次写定的。功能迭代、方向调整、原型实验之后,清单里经常会留下一批已经没有任何代码引用的依赖。它们看起来无害,实际代价却是连续的:

  • 构建时间:每个未使用的 crate 都要被下载、编译、链接,哪怕只是被间接引入。
  • 审查噪音:依赖变更让 diff 变大,评审者需要花时间确认某次升级是否安全、是否有真实用途。
  • 清单漂移:Cargo.lock 与真实依赖图逐渐脱节,后来的维护者很难判断哪些依赖是有意保留的。

这类依赖通常不会主动报错,编译器不会提醒你,cargo build 也不会慢到让人意识到问题。它们只是安静地留在清单里,持续消耗构建与评审的注意力。

这个技能如何工作

该技能基于 cargo-machete,围绕「扫描—判定—清理」三步展开:

  • 扫描:在包含 Rust 项目的目录中运行扫描,cargo-machete 会遍历清单里的每一项依赖,并在源码中查找对应的引用痕迹。
  • 判定:使用与否不是靠包名字符串是否出现来定,而是结合 Rust 的实际导入方式(如 use 语句、extern crate)判断依赖是否真的被引用。
  • 清理:扫描结果会列出未被引用的依赖,随后可将这些条目从 Cargo.toml 中移除,让清单回归到与代码一致的状态。

对需要管理多个项目的场景,它支持指向包含一个或多个 Cargo 项目的目录统一扫描,不必逐个项目手动排查。

适用边界与注意点

  • 运行前提是本机具备 Rust 工具链、目标是 Cargo 项目,并且有 shell 可用,以执行依赖扫描与清理编辑。
  • 它只解决「未使用」这一类问题,不会主动升级或替换依赖版本;依赖确实在用但版本老旧的情况不在其职责范围内。
  • 扫描结果建议与人工确认配合:某些依赖可能通过构建脚本、特性开关或动态加载被间接使用,移除前要结合项目实际情况判断。
  • 上游提供了 Docker 镜像,适合在隔离环境或 CI 流水线中运行扫描,避免污染本地工具链。
  • 技能说明提取自上游仓库与 cargo-machete 的 README,具体的判定细节以官方文档为准。

使用场景

  • 维护 Rust 项目时,发现构建时间变长,需要排查并移除 Cargo.toml 中未使用的依赖。
  • 提交代码前,想减少 PR 中依赖变更带来的审查噪音,确认清单与源码引用一致。
  • 管理多个 Rust 项目目录时,批量扫描各项目,清理长期未被引用的依赖。
  • 在 CI 或隔离环境中,通过 Docker 镜像运行 cargo-machete,避免污染本地工具链。

适合人员

  • Rust 后端工程师,希望缩短 CI 下载与编译耗时,降低未使用依赖的构建成本。
  • Rust 库维护者,需要定期核对 Cargo.toml 与源码引用,避免清单漂移影响后续升级。
  • 负责 Rust 服务审查的技术负责人,想减少依赖变更带来的评审噪音与确认负担。
  • 在 CI 流水线中做依赖管理的 DevOps 工程师,打算用 Docker 镜像执行依赖扫描。