Rust 编译器 rustc 可以直接将 Rust 源文件编译成可执行程序,但如果你试图用它来管理更复杂的项目,马上就会感到力不从心。你可能会遇到这些问题:
- 如何组织源代码文件?
- 如何构建多个文件?
- 如何添加依赖库?在哪里下载这些依赖?如何编译它们?
- 如何管理不同项目的不同版本?
- 如何测试、打包、发布我的程序?
这些任务没有标准的解决方式。每个项目都有可能使用不同的方式来编译和管理依赖,导致:
- 很难协作:别人必须了解你的项目结构和构建方式,才能参与进来。
- 很难维护:你很容易忘了自己是怎么设置的,或者为什么这么设置。
- 很难分享和发布:没有统一方式来定义和发布库。
Rust 社区希望让这些事情变得简单。因此,Cargo 就诞生了。
Cargo 的作用
Cargo 是 Rust 的官方构建系统和包管理工具。它让以下事情变得非常简单:
- 创建新的项目
- 构建项目
- 运行项目
- 添加和管理依赖项
- 编写和运行测试
- 安装和使用库和可执行程序
- 发布项目到 crates.io(Rust 的包注册中心)
Rust 项目默认都使用 Cargo,因为它:
- 统一了构建方式:所有项目都用相同结构,便于阅读、构建和协作。
- 自动处理依赖:指定依赖名称和版本后,Cargo 会自动下载、编译和缓存。
- 简化开发体验:比如你只需要运行
cargo run,Cargo 就会帮你先构建,再运行程序。 - 支持构建优化和交叉编译:包括发布版本构建、目标平台选择等。
- 方便测试和文档生成:如
cargo test、cargo doc。
Cargo 和 rustc 的关系
Cargo 并不是 Rust 编译器。Rust 编译器的名字是 rustc,它真正执行源代码的编译。而 Cargo 则是管理工具,它帮你:
- 找到你的源代码文件
- 下载依赖
- 调用
rustc去编译你的代码 - 管理生成的构建产物(如可执行文件和依赖库)
你可以把 rustc 想象成底层的“发动机”,而 Cargo 是“方向盘、油门、仪表盘”——它组织和协调整个开发过程。
为什么值得学习 Cargo
你也许可以写一个简单的 hello.rs 文件并用 rustc hello.rs 编译它。但当你开始开发真实项目时:
- 你会需要依赖其他库(比如
serde、regex) - 你会需要组织多个模块、多个文件
- 你会需要构建优化版程序(
cargo build --release) - 你会需要写测试、生成文档、打包、部署……
Cargo 会帮你把这些都变得更容易。
Cargo 存在是为了简化 Rust 项目的开发流程。它解决了项目构建、依赖管理、测试和发布的痛点。Cargo 的目标是:
- 让 Rust 项目更容易开始
- 让项目结构更一致
- 让开发体验更顺畅
- 让协作更高效
它是 Rust 工程化的基石。
如果你刚刚开始使用 Rust,那么学习使用 Cargo 是非常值得的投资。