Rust:cargo指令

  • cargo 是 Rust 的包管理器,用于管理依赖、构建、测试和发布项目。

  • 命令可分为本地包管理、构建与编译、测试与基准测试、运行与执行、依赖管理、信息与配置、注册表管理和其他类别。

  • 一些命令如 addremove 是较新的功能,从 Rust 1.62.0 开始可用。

  • 某些命令如 read-manifestverify-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 命令及其用途,按功能类别组织,旨在为开发者提供全面的参考。

方法

通过分析官方文档和相关资源,确认每个命令的功能,并根据其用途分类。特别注意较新的命令(如 addremove)和已废弃的命令(如 read-manifestverify-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: 已移除,不再可用,可能是早期版本的功能。

讨论

值得注意的是,addremove 是较新的命令,从 Rust 1.62.0 开始引入,之前需要手动编辑 cargo.toml 或使用第三方工具如 cargo-edit。miri 的使用适合高级开发者,特别是在安全关键场景下。已废弃的命令如 read-manifestverify-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 显示依赖树
相关推荐
2301_7930868744 分钟前
Springboot 04 starter
java·spring boot·后端
无限大63 小时前
只出现一次的数字:从暴力美学到位运算神技的进化之路
后端·面试
宇寒风暖3 小时前
Flask 框架全面详解
笔记·后端·python·学习·flask·知识
你的人类朋友3 小时前
❤️‍🔥为了省内存选择sqlite,代价是什么
数据库·后端·sqlite
还是鼠鼠4 小时前
tlias智能学习辅助系统--SpringAOP-进阶-通知顺序
java·后端·mysql·spring·mybatis·springboot
Pitayafruit4 小时前
Spring AI 进阶之路01:三步将 AI 整合进 Spring Boot
spring boot·后端·ai编程
用户21411832636025 小时前
零成本搭建 AI 应用!Hugging Face 免费 CPU 资源实战指南
后端
澡点睡觉5 小时前
golang的包和闭包
开发语言·后端·golang
outsider_友人A6 小时前
前端也想写后端(1)初识 Nest.js
后端·nestjs·全栈
涡能增压发动积8 小时前
Browser-Use Agent使用初体验
人工智能·后端·python