写给怕踩坑、也想跑得更快的你

A COMIC GUIDE TO SYSTEMS PROGRAMMING

Why Rust?

Rust 不是银弹。它只是把许多会在凌晨三点爆炸的事故, 提前变成编译期的一段对话。

  • No hype
  • Safe Rust
  • Zero external assets
MEET FERRIS
走出代码检查门的 Ferris 螃蟹 采用 Rust Book 官方 Ferris 造型的螃蟹从标有 CHECK PASSED 的代码门中走出。 CHECK PASSED cargo check 0 ERRORS

Compile first. Panic never. 编译期多聊几句,线上少掉几根头发。

为什么不只是「更快」

Rust 真正吸引人的地方,是它同时盯上了性能、安全和可维护性。代价当然也有,我们从收益说起。

内存安全不靠 GC

所有权和借用检查让编译器追踪每一块数据的去向。悬垂引用、释放后使用、数据竞争,在安全 Rust 中会先撞上编译错误。

Option<T> > null

并发不再靠勇气

Send 与 Sync 把线程间的共享规则写进类型系统。安全 Rust 保证不存在数据竞争,让并行代码更容易推理、测试和审查。

thread::spawn(move || ...)

抽象不必付租金

迭代器、泛型和模式匹配把表达力拉满,优化器再把它们压成接近手写机器码的形态。没有运行时,也没有 GC 停顿。

iter().filter().map()

错误必须被看见

Result、穷尽式 match 和严格的工具链,把“我们忘了处理这个分支”变成代码审查前就能发现的问题。

match / Result / Clippy

把大话编译成事实

它最有说服力的时刻,往往不是程序成功运行,而是错误代码没能离开你的电脑。

error[E0382]: borrow of moved value: `name`
 --> src/main.rs:6:20
  |
4 | let name = String::from("Rust");
  |     ---- move occurs because `name` has type `String`
5 | consume(name);
  |         ---- value moved here
6 | println!("{name}");
  |          ^^^^^^ value borrowed here after move
  |
  = help: pass `&name` to borrow instead

这不是“编译器爱找茬”。它正在替你提前支付线上排障账单,而且通常连修复建议一起给。

Null references Rust 用 Option 表示“可能没有”,把空值检查写进类型。
Data races in safe Rust 安全代码中的共享与可变访问由编译器统一裁决。
GC pauses 资源由作用域释放,没有垃圾收集器暂停世界。

边界也要说清:unsafe 可以绕过部分检查;逻辑错误、死锁、内存泄漏仍要开发者自己负责。安全 Rust 能阻止的只是一整类已知事故。阅读 Unsafe Rust 指南 ↗

Rust 不是许愿池

好的技术判断,需要把成本和收益放在同一张桌上。下面这些坑,越早接受越好。

代价 01

学习曲线真的陡

所有权、生命周期和借用不是背概念就会,得在真实代码里反复撞墙。前期速度变慢很常见。

回本方式:从 CLI、小服务或公司内部工具开始,而不是立刻重写核心系统。
代价 02

编译时间不总是朋友

泛型、过程宏和大型依赖图都可能让构建变慢。优化工作流前,别把它误认为运行时性能。

回本方式:拆分 crate、控制依赖、善用增量编译和 CI 缓存。
代价 03

生态更年轻

Rust 生态成长很快,但某些细分库、成熟案例和招人成本仍要和团队现状一起评估。

回本方式:先用试点量化稳定性、交付速度与运维成本,再决定边界。
先修编译器,再修线上。前者会告诉你答案。

特别适合,当你…

  • 在做长期维护的基础设施、CLI 或网络服务
  • 需要可预测延迟,不能接受 GC 停顿
  • 愿意用一次学习投入,换更早暴露的错误

先别急,如果…

  • 交付窗口极短,团队完全没时间学习
  • 核心依赖只在另一套生态里且无可用替代
  • 你只需要快速验证想法,原型阶段性能不是瓶颈

别听我吹,跑个程序

安装只需要一条命令。十分钟后,你会有一个能编译、能测试、能发布的 Rust 项目。

Install Rust · macOS / Linux
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Windows 用户可从 rustup.rs 下载安装程序。

  1. 安装工具链 rustup 管理编译器版本,cargo 负责构建、测试和依赖。
  2. 创建第一个项目 cargo new hello-rust
    然后在 src/main.rs 写下第一句 println!。
  3. 读一本正经的书 从 The Rust Programming Language 开始,不懂所有权就先回看。
  4. 让 Clippy 当你的搭档 cargo clippy,先学习它为什么皱眉,再决定要不要反驳。