Rust 入门
所有权、安全、系统级性能。
35 分钟
Rust 入门
Rust 把 内存安全与并发安全 放进编译期:所有权(ownership)、借用(borrow)、生命周期 替代 GC,同时避免 C++ 式悬垂指针。后端里 Rust 常见于 代理(Linkerd)、存储引擎、Wasm 边缘、加密库——通常不取代 java-fundamentals 里的业务 Spring 服务,而是 补性能与安全短板。
学习目标
- 理解所有权三规则直觉(不必一次写 unsafe)
- 读懂最小 Actix/axum 风格路由概念
- 说清 Rust 与 Java 在运行时、并发上的差异
所有权直觉
- 每个值 有且仅有一个 owner
- owner 离开作用域,值被 drop
- 可同时 不可变借用多个 或 可变借用一个,不能 alias + mutate
let s = String::from("hello");
let r1 = &s; // 不可变借用
let r2 = &s;
// let r3 = &mut s; // 编译错误:已有不可变借用
Java 靠 GC 回收;Rust 靠 编译器拒绝数据竞争。代价是学习曲线陡,与 borrow checker 搏斗 是常态。
错误处理:Result 与 Option
fn parse_port(s: &str) -> Result<u16, std::num::ParseIntError> {
s.parse()
}
无 checked exception 语法,但 ? 运算符传播错误——类似 Java 里层层 throws,更显式。Option<T> 对应 可空性的类型级表达,减少 NPE(Java 可对照 Optional,但 Rust 更强制)。
异步与并发
- async/await(Tokio):I/O 密集网络服务
- Send / Sync trait:跨线程安全由类型系统保证
- 对比 Java:无 green thread 式的 goroutine 默认可用,但 无 GC 停顿 适合延迟敏感路径
与 pl-concurrency 联动:Rust 把「线程安全」更多前移到编译期。
生态与工具
| 工具 | 作用 |
|---|---|
| cargo | 构建、测试、依赖(见 pl-ecosystem) |
| crates.io | 包 registry |
| clippy | lint |
| axum / actix-web | HTTP 框架 |
与 Java Maven:Cargo.toml 一个文件管依赖 + 元数据,workspace 可类比 multi-module。
何时选 Rust
- 性能 + 安全 同时硬指标:防火墙、解析器、区块链节点
- 与 C/FFI 交界:JNI 替代路径、嵌入式
- Wasm:边缘计算 runtime