Cargo使用指南 - 为什么 Cargo 会存在

153 阅读3分钟

Rust 编译器 rustc 可以直接将 Rust 源文件编译成可执行程序,但如果你试图用它来管理更复杂的项目,马上就会感到力不从心。你可能会遇到这些问题:

  • 如何组织源代码文件?
  • 如何构建多个文件?
  • 如何添加依赖库?在哪里下载这些依赖?如何编译它们?
  • 如何管理不同项目的不同版本?
  • 如何测试、打包、发布我的程序?

这些任务没有标准的解决方式。每个项目都有可能使用不同的方式来编译和管理依赖,导致:

  • 很难协作:别人必须了解你的项目结构和构建方式,才能参与进来。
  • 很难维护:你很容易忘了自己是怎么设置的,或者为什么这么设置。
  • 很难分享和发布:没有统一方式来定义和发布库。

Rust 社区希望让这些事情变得简单。因此,Cargo 就诞生了。


Cargo 的作用

Cargo 是 Rust 的官方构建系统和包管理工具。它让以下事情变得非常简单:

  • 创建新的项目
  • 构建项目
  • 运行项目
  • 添加和管理依赖项
  • 编写和运行测试
  • 安装和使用库和可执行程序
  • 发布项目到 crates.io(Rust 的包注册中心)

Rust 项目默认都使用 Cargo,因为它:

  • 统一了构建方式:所有项目都用相同结构,便于阅读、构建和协作。
  • 自动处理依赖:指定依赖名称和版本后,Cargo 会自动下载、编译和缓存。
  • 简化开发体验:比如你只需要运行 cargo run,Cargo 就会帮你先构建,再运行程序。
  • 支持构建优化和交叉编译:包括发布版本构建、目标平台选择等。
  • 方便测试和文档生成:如 cargo testcargo doc

Cargo 和 rustc 的关系

Cargo 并不是 Rust 编译器。Rust 编译器的名字是 rustc,它真正执行源代码的编译。而 Cargo 则是管理工具,它帮你:

  • 找到你的源代码文件
  • 下载依赖
  • 调用 rustc 去编译你的代码
  • 管理生成的构建产物(如可执行文件和依赖库)

你可以把 rustc 想象成底层的“发动机”,而 Cargo 是“方向盘、油门、仪表盘”——它组织和协调整个开发过程。


为什么值得学习 Cargo

你也许可以写一个简单的 hello.rs 文件并用 rustc hello.rs 编译它。但当你开始开发真实项目时:

  • 你会需要依赖其他库(比如 serderegex
  • 你会需要组织多个模块、多个文件
  • 你会需要构建优化版程序(cargo build --release
  • 你会需要写测试、生成文档、打包、部署……

Cargo 会帮你把这些都变得更容易。


Cargo 存在是为了简化 Rust 项目的开发流程。它解决了项目构建、依赖管理、测试和发布的痛点。Cargo 的目标是:

  • 让 Rust 项目更容易开始
  • 让项目结构更一致
  • 让开发体验更顺畅
  • 让协作更高效

它是 Rust 工程化的基石。

如果你刚刚开始使用 Rust,那么学习使用 Cargo 是非常值得的投资。