-
cargo 是 Rust 的包管理器,用于管理依赖、构建、测试和发布项目。
-
命令可分为本地包管理、构建与编译、测试与基准测试、运行与执行、依赖管理、信息与配置、注册表管理和其他类别。
-
一些命令如
add
和remove
是较新的功能,从 Rust 1.62.0 开始可用。 -
某些命令如
read-manifest
和verify-project
已废弃,git-checkout
已移除。
cargo 提供了丰富的命令来帮助开发者管理 Rust 项目。以下是每个命令的详细解释,按功能类别组织,适合初学者理解。
本地包管理
这些命令用于创建和管理本地包:
- add : 添加依赖到
cargo.toml
配置文件,从 Rust 1.62.0 开始可用。 - remove (rm) : 从
cargo.toml
移除依赖,从 Rust 1.62.0 开始可用。 - init: 在现有目录创建新包。
- new: 在指定路径创建新包。
- package: 将本地包组装成可分发的 tarball 文件。
构建与编译
这些命令用于编译和生成项目:
- build (b): 编译本地包及其所有依赖。
- check (c): 检查本地包及其依赖是否有错误,但不生成可执行文件。
- clean : 移除 cargo 之前生成的工件,如
target
目录。 - clippy: 使用 clippy 工具检查代码,捕获常见错误并改进代码质量。
- doc (d): 构建包的文档。
- fetch: 从网络获取包的依赖。
- fix: 自动修复 rustc 报告的 lint 警告。
- fmt: 使用 rustfmt 格式化当前 crate 的所有二进制和库文件。
- generate-lockfile: 为包生成 lockfile。
- rustc: 编译包,并传递额外选项给编译器。
- rustdoc: 使用自定义标志构建包的文档。
测试与基准测试
这些命令用于测试和性能评估:
- bench: 执行本地包的所有基准测试。
- test (t): 执行所有单元测试和集成测试,并构建示例。
- miri: 运行 Miri 解释器,用于测试和调试,检查 Rust 代码的未定义行为。
运行与执行
- run (r): 运行本地包的二进制文件或示例。
依赖管理
- update: 更新本地 lock 文件中记录的依赖。
- vendor: 将所有依赖本地化,适合离线构建或需要管理依赖版本的项目。
信息与配置
- config: 检查配置值。
- help: 显示 cargo 子命令的帮助信息。
- locate-project : 打印
cargo.toml
文件位置的 JSON 表示。 - metadata: 以机器可读格式输出包的解析依赖,包括具体版本和覆盖。
- pkgid: 打印完全限定的包规范。
- version: 显示 cargo 的版本信息。
注册表管理
- install: 从 crates.io 或其他注册表安装 Rust 二进制文件。
- login: 登录到注册表。
- logout: 从本地移除注册表的 API 令牌。
- owner: 管理注册表上 crate 的所有者。
- publish: 将包上传到注册表。
- search: 在注册表中搜索包,默认是 crates.io。
- uninstall: 移除 Rust 二进制文件。
- yank: 从索引中移除已推送的 crate。
其他
- tree: 显示依赖图的树状可视化。
- report: 生成并显示各种报告。
- read-manifest : 已废弃,打印
cargo.toml
清单的 JSON 表示。 - verify-project: 已废弃,检查 crate 清单的正确性。
已移除的命令
- git-checkout: 此命令已移除,不再可用。
详细调查报告
引言
cargo 是 Rust 编程语言的包管理器,负责处理依赖、构建、测试和发布项目。它提供了丰富的命令集,涵盖从本地包管理到注册表交互的各种功能。本报告详细解释了用户提供的每个 cargo 命令及其用途,按功能类别组织,旨在为开发者提供全面的参考。
方法
通过分析官方文档和相关资源,确认每个命令的功能,并根据其用途分类。特别注意较新的命令(如 add
和 remove
)和已废弃的命令(如 read-manifest
和 verify-project
)。报告还包括对某些命令(如 miri
)的额外解释,以确保完整性。
分类与详细解释
本地包管理
本地包管理命令用于创建和修改本地 Rust 项目:
- add : 从 Rust 1.62.0 开始可用,用于向
cargo.toml
添加依赖,简化手动编辑。例如,cargo add serde
会添加 serde crate。(cargo add - The Cargo Book) - remove (rm) : 同样从 Rust 1.62.0 开始可用,用于从
cargo.toml
移除依赖,如cargo remove serde
。 - init : 在现有目录创建新包,初始化
cargo.toml
和项目结构。 - new: 在指定路径创建新包,适合新项目启动。
- package: 将本地包组装成 tarball 文件,准备发布。
构建与编译
这些命令用于编译和生成项目文件:
- build (b) : 编译本地包及其依赖,生成可执行文件或库。
b
是其别名。 - check (c) : 检查代码是否有错误,但不生成可执行文件,适合快速验证。
c
是其别名。 - clean : 移除之前生成的工件,如
target
目录,清理项目。 - clippy: 使用 clippy 工具检查代码,捕获常见错误并建议改进。
- doc (d) : 构建包的文档,生成 HTML 文件。
d
是其别名。 - fetch: 从网络获取依赖,确保本地缓存最新。
- fix: 自动修复 rustc 报告的 lint 警告,改进代码质量。
- fmt: 使用 rustfmt 格式化代码,确保一致的代码风格。
- generate-lockfile : 为包生成
Cargo.lock
文件,锁定依赖版本。 - rustc: 直接调用 rustc 编译器,允许传递额外选项。
- rustdoc: 使用自定义标志构建文档,适合高级文档生成。
测试与基准测试
这些命令用于验证代码功能和性能:
- bench: 执行所有基准测试,评估性能。
- test (t) : 执行单元测试和集成测试,并构建示例。
t
是其别名。 - miri : 运行 Miri 解释器,用于检测未定义行为,特别适合安全关键代码。(Miri documentation)
运行与执行
- run (r) : 运行本地包的二进制文件或示例,方便调试。
r
是其别名。
依赖管理
- update : 更新
Cargo.lock
文件中记录的依赖,确保使用最新版本。 - vendor : 将所有依赖本地化,生成
vendor
目录,适合离线环境。
信息与配置
- config: 检查 cargo 的配置值,了解当前设置。
- help: 显示子命令的帮助信息,适合初学者。
- info: 显示包的信息,包括元数据。
- locate-project : 打印
cargo.toml
位置的 JSON 表示,适合脚本使用。 - metadata: 以机器可读格式输出依赖信息,适合自动化工具。
- pkgid: 打印完全限定的包规范,显示包的唯一标识。
- version: 显示 cargo 的版本信息,确认当前使用版本。
注册表管理
这些命令用于与 crates.io 或其他注册表交互:
- install: 从注册表安装 Rust 二进制文件,如工具或命令行程序。
- login: 登录到注册表,获取 API 令牌。
- logout: 从本地移除注册表的 API 令牌,安全退出。
- owner: 管理注册表上 crate 的所有者,适合团队协作。
- publish: 将包上传到注册表,如 crates.io。
- search: 在注册表中搜索包,默认使用 crates.io。
- uninstall: 移除之前安装的 Rust 二进制文件。
- yank: 从索引中移除已推送的 crate,适合紧急修复。
其他
- tree: 显示依赖图的树状可视化,方便分析依赖关系。
- report: 生成并显示各种报告,适合项目分析。
- read-manifest : 已废弃,打印
cargo.toml
的 JSON 表示,不推荐使用。 - verify-project: 已废弃,检查 crate 清单的正确性,不再维护。
已移除的命令
- git-checkout: 已移除,不再可用,可能是早期版本的功能。
讨论
值得注意的是,add
和 remove
是较新的命令,从 Rust 1.62.0 开始引入,之前需要手动编辑 cargo.toml
或使用第三方工具如 cargo-edit。miri
的使用适合高级开发者,特别是在安全关键场景下。已废弃的命令如 read-manifest
和 verify-project
应避免使用,以确保兼容性。
表格:命令类别与示例
以下表格总结了主要命令类别及其示例:
类别 | 命令 | 示例 | 备注 |
---|---|---|---|
本地包管理 | add, remove | cargo add serde |
从 Rust 1.62.0 开始可用 |
构建与编译 | build, check | cargo build |
build 是常用命令 |
测试与基准测试 | test, bench | cargo test |
test 包括单元和集成测试 |
运行与执行 | run | cargo run |
运行二进制或示例 |
依赖管理 | update, vendor | cargo update |
vendor 适合离线环境 |
信息与配置 | help, version | cargo --help |
version 显示 cargo 版本 |
注册表管理 | publish, search | cargo search serde |
search 默认使用 crates.io |
其他 | tree, report | cargo tree |
tree 显示依赖树 |