Rust 简介
设计目标、和 C++/Go 的取舍、以及它不适用的场景。
Key PointsRust 的承诺是「零成本抽象」:高级语法不带来运行时开销。
三条设计原则
- 内存安全 —— 没有空指针解引用、缓冲区溢出、数据竞争(在安全代码里)
- 零成本抽象 —— 迭代器、泛型、trait 编译后和手写循环一样快
- 无畏并发 —— 编译期就能挡住数据竞争
Rust
// 迭代器链,编译后等同于一个 for 循环
let sum: i32 = (1..=100)
.filter(|x| x % 2 == 0)
.map(|x| x * x)
.sum();
println!("{}", sum);Output
171700和 C++ / Go 比
| Aspect | Rust | C++ | Go |
|---|---|---|---|
| 内存管理 | 编译期所有权 | 手动 + RAII | GC |
| 内存安全 | 安全代码保证 | 靠人 | GC 保证 |
| 学习曲线 | 陡 | 很陡 | 平缓 |
| 编译速度 | 中等 | 慢 | 极快 |
| 并发 | 编译期防竞争 | 靠库与经验 | goroutine 简单 |
| 生态成熟度 | 成长中 | 极成熟 | 成熟 |
一段对比代码
Rust
fn main() {
let mut v = vec![1, 2, 3];
// 借用 v 的引用,v 不能同时被改
let first = &v[0];
println!("第一个 {}", first);
// 下面这行会编译失败:cannot borrow `v` as mutable
// v.push(4);
}Output
第一个 1Uncomment v.push(4) and the compiler says cannot borrow v as mutable because it is also borrowed as immutable. That is the borrow checker stopping "read while mutating" before your code ever runs.
不适合的场景
- 快速原型 —— 编译期的严格会拖慢试错,脚本用 Python 更合适
- GUI 桌面应用 —— 生态还在早期
- 机器学习训练 —— 框架基本都在 Python
- 团队没有系统编程经验 —— 前三个月的产出会明显下降
Rust pays off long term — fewer crashes, stable memory, confident refactors. It costs short term — you write slower. For short projects or unfamiliar teams the trade is poor.
三条设计原则
- 内存安全 —— 没有空指针解引用、缓冲区溢出、数据竞争(在安全代码里)
- 零成本抽象 —— 迭代器、泛型、trait 编译后和手写循环一样快
- 无畏并发 —— 编译期就能挡住数据竞争
Rust
// 迭代器链,编译后等同于一个 for 循环
let sum: i32 = (1..=100)
.filter(|x| x % 2 == 0)
.map(|x| x * x)
.sum();
println!("{}", sum);Output
171700和 C++ / Go 比
| 对比项 | Rust | C++ | Go |
|---|---|---|---|
| 内存管理 | 编译期所有权 | 手动 + RAII | GC |
| 内存安全 | 安全代码保证 | 靠人 | GC 保证 |
| 学习曲线 | 陡 | 很陡 | 平缓 |
| 编译速度 | 中等 | 慢 | 极快 |
| 并发 | 编译期防竞争 | 靠库与经验 | goroutine 简单 |
| 生态成熟度 | 成长中 | 极成熟 | 成熟 |
一段对比代码
Rust
fn main() {
let mut v = vec![1, 2, 3];
// 借用 v 的引用,v 不能同时被改
let first = &v[0];
println!("第一个 {}", first);
// 下面这行会编译失败:cannot borrow `v` as mutable
// v.push(4);
}Output
第一个 1把 v.push(4) 的注释去掉,编译器会说 cannot borrow v as mutable because it is also borrowed as immutable。这就是借用检查器:它在你运行之前就把「边读边改」的风险拦下来。
不适合的场景
- 快速原型 —— 编译期的严格会拖慢试错,脚本用 Python 更合适
- GUI 桌面应用 —— 生态还在早期
- 机器学习训练 —— 框架基本都在 Python
- 团队没有系统编程经验 —— 前三个月的产出会明显下降
Rust 的收益是长期的:上线后崩溃少、内存占用稳定、重构敢动。代价是短期的:写得慢。项目周期短、团队不熟悉时,这个交易不划算。