Rust 环境安装与 Cargo

工欲善其事,必先利其器。这一篇我们安装 Rust 工具链,认识它的官方包管理器 Cargo,并把第一个项目跑起来。Rust 的工具链体验在所有系统级语言里公认最好——一行命令装好所有东西,不用像 C/C++ 那样折腾环境变量。

1. 用 rustup 一键安装

Rust 官方推荐用 rustup 来管理工具链(类似 Node 的 nvm、Python 的 pyenv)。它能装编译器 rustc、包管理器 cargo、标准库文档,以及切换不同版本。

# ===== macOS / Linux =====
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# 安装过程中一路回车即可(选默认选项)
# 装完重启终端,或手动执行:
source "$HOME/.cargo/env"

# ===== Windows =====
# 访问 https://rustup.rs 下载 rustup-init.exe 双击运行
# 需要先装好 MSVC 构建工具(Visual Studio Build Tools)

# 验证安装
rustc --version      # 查看编译器版本
cargo --version      # 查看包管理器版本
rustup --version     # 查看 rustup 版本

装完输入 cargo --version,能看到版本号就说明成功了。整个过程在 macOS/Linux 上不到 1 分钟。Linux 用户如果发行版自带 Rust 包,不建议用系统包管理器装(版本通常过时),请用 rustup。

2. 认识 Cargo:Rust 的瑞士军刀

Cargo 是 Rust 官方的构建工具 + 包管理器,所有 Rust 项目都用它。它的地位相当于 Node 的 npm + webpack、Rust 的 make + pip。你几乎不会直接调用 rustc,而是通过 Cargo 间接编译——它会自动处理依赖下载、增量编译、链接等繁琐事务。

Cargo 的几个核心功能:

3. 创建并运行第一个项目

我们来用 Cargo 创建第一个项目:

# 创建一个新项目(自动生成目录结构)
cargo new hello_rust
cd hello_rust

# 生成的目录长这样:
# hello_rust/
# ├── Cargo.toml      项目配置文件(依赖、元信息)
# ├── Cargo.lock      依赖锁定文件(自动生成,别手动改)
# ├── src/
# │   └── main.rs     程序源码入口
# ├── target/         编译产物目录(gitignore)
# └── .git/           git 仓库

# 编译并运行
cargo run
# 输出: Hello, world!

看到 Hello, world! 输出就成功了。Cargo 自动生成了标准目录、git 仓库、还有一段能直接跑的示例代码。这比 C/C++ 手写 Makefile 友好太多。

4. 看懂 Cargo.toml

每个 Rust 项目的根目录都有一个 Cargo.toml,用 TOML 格式写成,记录项目元信息和依赖。它的作用相当于 Node 的 package.json、Python 的 pyproject.toml。

# Cargo.toml — 项目的"身份证 + 依赖清单"
[package]
name = "hello_rust"        # 项目名(crate 名)
version = "0.1.0"          # 语义化版本号
edition = "2021"           # Rust 版本(2021 是当前默认)

[dependencies]
# 在这里声明依赖的第三方库(称为 crate)
# 例:rand = "0.8"          # 版本号语法:只允许 0.8.x
#     serde = { version = "1", features = ["derive"] }

几个要点:edition 表示 Rust 的"版本"(类似 ES6 之于 JS),目前默认 2021,它决定哪些语法特性可用;依赖版本号用 SemVer,写 "0.8" 表示允许 0.8.x 的最新版;复杂依赖可以指定 features 开启可选功能。

5. 自动生成的源码

src/main.rs 里的内容如下,我们后续会逐字解释:

// src/main.rs — cargo new 自动生成的代码
fn main() {
    println!("Hello, world!");
}

6. Cargo 常用命令速查

日常开发 90% 的时间你只用得上这几个命令。其中 cargo check 是开发时的神器——它只做类型检查不生成二进制,速度比 build 快很多,适合边写边验证。

# ===== Cargo 日常最常用命令 =====
cargo new <name>        # 新建项目(--lib 创建库)
cargo build             # 编译(产物在 target/debug)
cargo run               # 编译 + 运行(开发时最常用)
cargo check             # 只做编译检查,不生成产物(最快)
cargo build --release   # 优化编译(产物在 target/release)
cargo test              # 运行所有测试
cargo fmt               # 自动格式化代码
cargo clippy            # 运行 lint,给出改进建议
cargo add rand          # 自动添加依赖到 Cargo.toml 并下载
cargo doc --open        # 生成文档并在浏览器打开

# ===== rustup 工具链管理 =====
rustup update           # 更新 Rust 到最新版
rustup component add clippy rust-src  # 安装额外组件

特别推荐 cargo clippy,它是 Rust 的 lint 工具,会指出你代码里不够地道的写法并给出改进建议。新手多看 clippy 的提示,能快速养成"Rust 风格"的编码习惯。

7. 二进制项目 vs 库项目

Rust 项目分两种:

# 库项目(不能直接运行,供其他项目引用)
cargo new my_lib --lib

# src/lib.rs 是库的入口
// pub fn add(a: i32, b: i32) -> i32 {
//     a + b
// }

一个项目可以同时包含 main.rs 和 lib.rs——main.rs 负责接收命令行参数、调用 lib 里的逻辑,这是大型项目的常见组织方式。

8. IDE 推荐:rust-analyzer

Rust 的开发体验很大程度上取决于 IDE。rust-analyzer 是官方主推的语言服务器(Language Server),提供代码补全、跳转定义、实时类型提示、内联错误标注。强烈推荐安装:

9. 关于 target 目录

编译产物都放在项目根的 target/ 目录下,其中 target/debug 是开发版(编译快、带调试信息),target/release 是优化版(编译慢、性能最好)。这个目录体积会很大(几百 MB 很正常),不要提交到 git——Cargo 会自动生成 .gitignore 帮你忽略它。

清理 target 用 cargo clean,但通常没必要——Cargo 的增量编译很智能,只重新编译改动过的部分。

小结

这一篇你装好了 Rust,学会用 Cargo 创建/编译/运行项目,认识了 Cargo.toml 和常用命令。现在你已经能在本地跑任何 Rust 代码了。下一篇我们正式进入语法,看懂 Rust 程序的整体结构。

← 上一篇 Rust 语言简介

下一篇 Rust 基础语法

✈️💬