主要观点:Rust 项目往往有很多依赖,通过对ripgrep和miniserve等项目的依赖检查进行了说明,指出存在多种类型的依赖,包括不想自己实现的功能相关依赖、作为系统设施或硬件设备规范接口的依赖等,还提到了“安全隔离”类型的依赖,如bytemuck等,最后提出可以通过最小化特征和切换到依赖更少的并行 crate 等措施来减少依赖。
关键信息:
cargo tree可打印当前 Cargo 包的依赖树,-e no-dev可跳过开发依赖,--prefix none可跳过默认树格式。sed可对命令输出的每一行运行正则表达式进行处理。ripgrep有 33 个依赖,miniserve有 281 个依赖,包含各种不同的库。- 存在两种类型的依赖,以及“安全隔离”类型的依赖及其作用。
- 可通过
cargo add --no-default-features减少特征从而减少依赖,或切换到依赖更少的并行 crate 。
重要细节:
- 在检查
ripgrep依赖时,使用git clone克隆项目,然后通过一系列sed和cargo tree命令来统计依赖数量。 - 在检查
miniserve依赖时,添加了--no-default-features来去除不必要的依赖。 - 举例说明不同类型的依赖,如
actix-web带来tokio等。 - 以
scopeguard为例说明一些过于简单的操作使用单独 crate 是过度的。 - 以
smol为例说明“安全隔离”类型依赖的作用。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。