章节目录

安装工具链、Cargo 与第一次运行

本章目标

这一章解决“怎么把 Rust 程序跑起来”。你会理解 rustccargorustup 分别负责什么,为什么真实项目几乎都用 Cargo,以及当前 RinBlog 项目如何启动。

它是什么

Rust 工具链通常由三层组成:

  • rustup:工具链管理器,负责安装、升级、切换 Rust 版本。
  • rustc:Rust 编译器,负责把 .rs 源码编译成机器可执行文件。
  • cargo:项目管理工具,负责创建项目、下载依赖、编译、测试、运行、生成文档。

你可以把它们理解成:rustup 管安装,rustc 管编译,cargo 管工程。

为什么需要

小程序可以直接运行 rustc main.rs,但真实项目会很快遇到这些问题:

  • 有多个源码文件,编译顺序怎么管理。
  • 需要第三方库,下载和版本锁定怎么做。
  • 要跑测试,测试文件放在哪里。
  • 不同机器构建结果要尽量一致。

Cargo 统一解决这些工程问题。当前项目的 Cargo.toml 声明包名、版本、edition 和依赖,Cargo.lock 记录精确依赖版本。

怎么使用

在当前项目根目录运行:

cargo run

它会做三件事:

  1. 读取 Cargo.toml
  2. 编译 src/main.rs 和依赖。
  3. 启动编译后的程序。

启动后访问:

http://127.0.0.1:7878

新增教材站后,访问:

http://127.0.0.1:7878/docs

逐行解释

看当前项目的 Cargo.toml

[package]
name = "rinblog"
version = "0.1.0"
edition = "2024"

[dependencies]
pulldown-cmark = "0.13.4"
  • [package] 是包信息区域。
  • name = "rinblog" 是项目名称,Cargo 会用它命名构建产物。
  • version = "0.1.0" 是包版本,遵循常见的语义化版本写法。
  • edition = "2024" 表示使用 Rust 2024 edition。edition 是语言演进边界,不等于编译器版本。
  • [dependencies] 是依赖区域。
  • pulldown-cmark = "0.13.4" 表示使用这个 crate 来渲染 Markdown。

当你运行 cargo test,Cargo 会编译测试版本并执行 #[test] 函数。当你运行 cargo check,Cargo 只做类型检查和借用检查,不生成最终可执行文件,因此速度通常更快。

常见坑

  • cargo run 要在含有 Cargo.toml 的项目根目录执行。
  • Cargo.lock 对应用程序应该提交,因为它保证依赖版本可复现。
  • 安装了 Rust 不等于终端能找到它。若命令不存在,检查环境变量或重新打开终端。
  • cargo clean 会删除构建产物,通常只在构建缓存异常或需要释放空间时使用。

练习

  1. 运行 cargo check,确认项目能通过检查。
  2. 运行 cargo test,观察测试输出。
  3. 打开 target/debug,看看构建产物在哪里。
  4. 修改 Cargo.toml 的包名,再运行 cargo check,观察 Cargo 输出变化。

造轮子任务

写一个最小命令行程序,接收源码中硬编码的项目名并打印“项目已启动”。然后分别用 cargo runcargo build 体验“运行”和“只构建”的区别。

小结

cargo 是 Rust 工程的入口。你不需要一开始记住所有命令,但要熟悉 cargo runcargo checkcargo test。它们会贯穿本书的每个阶段。