← 返回文章列表
我为什么开始学 Rust
写了四年 Go(从 1.16 到 1.24),后端那套已经很熟了——gin、gorm、k8s、gRPC、消息队列——想找个新的挑战。Rust 是那种让人又爱又恨的语言。
为什么不是别的方向
- 前端:TypeScript 生态庞大但缺乏系统编程的快感
- Python:数据/AI 方向很好,但我不喜欢动态类型做大项目
- Zig / Nim:太年轻,生态不够
Rust 有几个关键吸引力:
- 零成本抽象:高级语法糖不影响运行时性能
- 无 GC:适合系统编程、游戏引擎、WASM
- 类型系统强大:Option / Result / enum / pattern matching,比 Go 的 if err != nil 语义丰富得多
- 生态成熟:Cargo 太好用了,堪比 npm 的体验但有编译期安全保证
从 Go 到 Rust 的阻力
前三周的强烈不适感来自:
- 所有权:Go 里随手
data = append(data, item),Rust 里要纠结&mut、clone()、into_iter() - 生命周期标注:
<'a>看起来很劝退,习惯后才发现大部分场景编译器能推断 - 编译速度:Go 的编译是秒级,Rust 一个中型项目轻松 30 秒起步
第一个月怎么熬
我没按标准路线走——官方书的第 3-6 章快速过完(所有权/struct/enum/match/Result),然后直接动手写项目:终端版贪食蛇。边写边查文档,踩坑学得最快。
三周后,用 wasm-pack 把终端版移植到浏览器端,用 Canvas 渲染。12 小时的挣扎换来了对 Box、Rc、RefCell 的真正理解。
Go + Rust 双栈
现在 Go 依然是主力——API 服务、微服务、K8s operator 都用 Go。Rust 主攻 WASM 和 CLI 工具。这两门语言不冲突,反而互补:Go 做业务,Rust 做底层。
如果还在犹豫要不要学 Rust:不要把它当成"替代品",当成工具链的扩展。多一门语言不会让 Go 变差,但会让你看见更多可能性。