完成Rust开发环境搭建,理解编译工具链,编写并运行第一个Rust程序,掌握cargo项目管理。
Rust是一种系统编程语言,由Mozilla研究院的Graydon Hoare于2006年发起,2015年发布1.0版本。三大核心目标:
Rust连续多年在Stack Overflow调查中被评为"最受喜爱语言",已被Linux内核、Android、Windows、Cloudflare等广泛采用。
// 使用rustup安装(官方推荐)
$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
// 配置环境变量
$ source $HOME/.cargo/env
// 验证安装
$ rustc --version
rustc 1.95.0 (59807616e 2026-04-14)
$ cargo --version
cargo 1.95.0 (e84948d7 2026-04-15)
| 工具 | 作用 | 说明 |
|---|---|---|
rustc | Rust编译器 | 将.rs源码编译为机器码 |
cargo | 包管理+构建 | 类似npm/pip |
rustup | 工具链管理 | 管理版本和目标平台 |
rustfmt | 代码格式化 | 统一风格 |
clippy | lint检查 | 发现错误和改进建议 |
推荐扩展:rust-analyzer(语言服务器)、CodeLLDB(调试器)、Even Better TOML。
// hello.rs - 最简Rust程序
fn main() {
println!("Hello, World!");
}
✅ 编译验证通过 rustc hello.rs && ./hello
fn main() — 程序入口函数println! — 宏(注意!),编译期展开为格式化输出"Hello, World!" — 字符串字面量,类型为&'static str;结尾,表达式不需要$ cargo new hello_cargo
$ cd hello_cargo
// 项目结构
hello_cargo/
├── Cargo.toml // 项目配置
├── src/
│ └── main.rs // 源代码
└── .git/ // 自动Git
[package]
name = "hello_cargo"
version = "0.1.0"
edition = "2024" // Rust版本
[dependencies]
// 第三方依赖写在这里
| 命令 | 功能 |
|---|---|
cargo build | 编译(debug模式) |
cargo build --release | 编译优化版 |
cargo run | 编译并运行 |
cargo check | 快速语法检查 |
cargo test | 运行测试 |
cargo doc --open | 生成文档 |
cargo fmt | 格式化代码 |
cargo clippy | lint检查 |
fn main() {
// 位置参数
println!("{} {}!", "Hello", "Rust");
// 命名参数
println!("{name} is {age}", name="Alice", age=30);
// 格式化
println!("十进制:{} 二进制:{:b} 十六进制:{:x}", 42, 42, 42);
println!("浮点: {:.2}", 3.14159);
// 对齐
println!("{:>10}", "right");
println!("{:<10}", "left");
// 调试输出
let v = vec![1, 2, 3];
println!("调试: {:?}", v);
println!("美化: {:#?}", v);
}
✅ 编译验证通过
"Hello, World!"编译时嵌入只读数据段,类型&'static str,不是堆分配!String才是堆分配可变字符串。
// Rust编译流程
.rs 源码 → 词法分析 → Token流 → 语法分析 → AST
→ HIR lowering → HIR → 类型检查+借用检查
→ MIR (借用检查器在此工作!) → 代码生成
→ LLVM IR → LLVM优化 → 机器码
fn main() {
println!("你好,{}!今天是{}", "你的名字", "2026-05-19");
}
创建Cargo项目,添加chrono依赖,输出当前时间。
用println!输出对齐表格:
姓名 年龄 分数
────────────────────
Alice 25 95.50
Bob 30 88.30
完成Rust安装,成功运行Hello World,掌握Cargo基本操作
Rust的设计遵循几个核心原则,理解这些原则能帮助你更好地使用Rust:
Rust要求你显式声明可变性(mut)、生命周期、错误处理。没有隐式类型转换、没有隐式异常传播、没有隐式GC。虽然代码更冗长,但行为更可预测。
借用检查器、生命周期分析、trait约束——所有这些都在编译期完成。这意味着运行时零开销。你付出的代价是编译时间,换来的是运行时性能和安全。
高层抽象(泛型、trait、迭代器、async/await)编译后与手写底层代码一样高效。你不需要在抽象和性能之间做选择。
所有其他特性——借用检查、生命周期、并发安全——都建立在所有权模型之上。理解所有权,就理解了Rust。
| 年份 | 里程碑 |
|---|---|
| 2006 | Graydon Hoare开始Rust项目 |
| 2009 | Mozilla开始赞助 |
| 2010 | 首次公开 |
| 2012 | 第一个预发布版 |
| 2015 | Rust 1.0发布 |
| 2016-2024 | 连续Stack Overflow最受喜爱语言 |
| 2022 | Linux内核接纳Rust |
| 2023 | Android、Windows开始使用Rust |
| 2024 | Rust基金会成立,生态系统成熟 |
| 2026 | 你正在学习Rust! |
基础阶段(1-2周):完成本课程第1-7课,重点理解所有权和借用。
进阶阶段(2-3周):完成第8-14课,掌握trait、泛型、智能指针。
系统阶段(2-3周):完成第15-21课,实际写并发程序。
网络阶段(2-3周):完成第22-28课,构建真实的网络服务。
实战阶段(持续):完成第29-35课,开始自己的项目。
以下资源帮助你深入学习本课主题:
本课涉及的核心概念,确保你理解每一个:
| 术语 | 说明 |
|---|---|
| 所有权 | Rust内存管理的核心机制,每个值有唯一所有者 |
| 借用 | 通过引用访问数据,不获取所有权 |
| 生命周期 | 引用有效的范围,编译期分析工具 |
| trait | Rust的接口/抽象机制,类似其他语言的接口 |
| 泛型 | 参数化类型,零成本抽象 |
| 模式匹配 | 强大的数据解构和分支机制 |
| 零成本抽象 | 高层抽象不引入运行时开销 |
| fearless concurrency | 编译器保证线程安全 |
Q: Rust学习曲线真的很陡吗?
A: 前期确实需要适应所有权和借用检查器,但一旦理解了,这些概念会让你的代码更可靠。大多数人2-4周就能上手。
Q: Rust适合什么项目?
A: 系统编程、Web服务、CLI工具、嵌入式、WASM、网络服务、数据库等。基本上需要性能和安全的地方都适合。
Q: 遇到编译错误怎么办?
A: Rust编译器的错误信息非常友好!仔细阅读,通常会指出问题所在和修复建议。也可以用cargo clippy获取更多提示。