用了半年Rust,有些话不吐不快
技术笔记 2 次阅读

用了半年Rust,有些话不吐不快

用了半年Rust,有些话不吐不快

为什么会想着学 Rust

说实话,最开始接触 Rust 完全是被朋友圈逼的。去年团队接了个新项目,要做个高性能的后端服务,Go 写了两年总觉得差点意思,内存和并发控制都得自己小心盯着。同事甩了句"要不试试 Rust",我就跳进这个坑了。

一上来就被编译器教育了整整两周。真的,两周。写三行代码,编译报五个错。ownership 和 borrowing 的概念绕得我头晕,有次为了一个生命周期标注折腾了三个小时,最后发现是少了个单引号。那会儿真觉得这语言有病,门槛搞得这么高图啥呢?

真香警告

但坚持了一个月之后,事情开始变了。最直观的感受是——重构的时候太爽了。以前用 Python 或者 JavaScript,改一个函数签名,整个项目哪里调用了得一个一个找,跑起来才知道崩没崩。Rust 呢?编译器直接告诉你哪行哪列需要改,不改不让过。一开始觉得烦,后来发现这其实是帮你省了大麻烦。

再说性能。我们新服务上线后,同样一台 4 核 8G 的服务器,之前 Go 版本扛 2000 并发就开始抖了,Rust 版本直接飙到 6000 还稳得很。压测的时候我都怀疑数据是不是假的,反复测了三轮才信。老板看了监控报表,第二天就问我"能不能把其他服务也重写了"——我说算了,您给的钱不够买我头发。

生态到底怎么样了

很多人问我现在 Rust 的生态成熟吗?我的回答是:核心库很稳,小众场景靠碰运气。比如 tokio 做异步运行时、serde 做序列化、clap 做命令行,这些都已经到了拿来就用的程度。crates.io 上的包质量整体比 npm 高一大截,至少不会有 left-pad 那种几行代码的包被几万个项目依赖的情况。

但是!如果你想找个好用的 GUI 框架,或者要做某些偏门的硬件协议对接,那还是得做好造轮子的心理准备。上个月我想用 Rust 写个简单的桌面小工具,折腾了三天最后还是回去用 Electron 了——虽然 Rust 的 Tauri 确实轻量,但有些第三方插件还得自己封装。

学习曲线到底有多陡

网上都说不建议新手直接学 Rust,我其实不太同意这个说法。如果你对 C/C++ 有基础,Rust 的很多概念其实很自然。如果只写过 Python 或 JS,那确实需要补一些内存布局的基础知识。

但我自己的经验是:别一上来就啃《Rust 程序设计》那本大部头。找个你喜欢的小项目直接上手,比如写个命令行工具、做个简单的 Web 服务。遇到什么问题查什么文档,慢慢就摸清楚了。官方的 "Rust by Example" 比任何教程都管用。

那套工具链值得吹一波

Cargo 这东西用惯了再回去折腾 npm/webpack 真的会受不了。一个命令新建项目,一个命令跑测试,一个命令打包发布。不用配置 webpack,不用折腾 babel,不用犹豫用 yarn 还是 pnpm。缺点就是——如果用惯了这种体验,再看别的语言的项目会有种"怎么连个包管理器都做不好"的暴躁感。

最后说点实际的

Rust 确实不是万能的。做前端开发、快速原型、数据分析这些场景它并不适合。但在系统编程、高性能后端、嵌入式、WebAssembly 这些领域,它真的是当下最好的选择之一。

用了半年之后我最大的感受是:Rust 没有让我写代码更快,但它让我写完代码之后更放心。那种编译通过就等于逻辑没问题(至少内存没问题)的安全感,是用别的语言体会不到的。

对了,入坑建议——先装好 clippy 和 rust-analyzer,这俩插件能让你少掉一半的头发。

分享

评论 (0)

评论通过后显示

暂无评论,来写第一条吧 ✍️