如何处理 Rust 依赖项

主要观点:Rust 项目往往有很多依赖,通过对ripgrepminiserve等项目的依赖检查进行了说明,指出存在多种类型的依赖,包括不想自己实现的功能相关依赖、作为系统设施或硬件设备规范接口的依赖等,还提到了“安全隔离”类型的依赖,如bytemuck等,最后提出可以通过最小化特征和切换到依赖更少的并行 crate 等措施来减少依赖。

关键信息:

  • cargo tree可打印当前 Cargo 包的依赖树,-e no-dev可跳过开发依赖,--prefix none可跳过默认树格式。
  • sed可对命令输出的每一行运行正则表达式进行处理。
  • ripgrep有 33 个依赖,miniserve有 281 个依赖,包含各种不同的库。
  • 存在两种类型的依赖,以及“安全隔离”类型的依赖及其作用。
  • 可通过cargo add --no-default-features减少特征从而减少依赖,或切换到依赖更少的并行 crate 。

重要细节:

  • 在检查ripgrep依赖时,使用git clone克隆项目,然后通过一系列sedcargo tree命令来统计依赖数量。
  • 在检查miniserve依赖时,添加了--no-default-features来去除不必要的依赖。
  • 举例说明不同类型的依赖,如actix-web带来tokio等。
  • scopeguard为例说明一些过于简单的操作使用单独 crate 是过度的。
  • smol为例说明“安全隔离”类型依赖的作用。
阅读 9
0 条评论