2000 年前后,用 C++ 写系统软件的人都知道内存管理有多头疼——稍不注意就是泄漏或段错误。托管语言像 Java 靠着 GC 省心,但在嵌入式或实时场景里一卡顿就很要命。
Graydon Hoare 在 Mozilla 工作时,想着能不能搞一门语言,跑得像 C++ 那么快,但又不用手动管内存,最好编译器能在编译时就拦住那些危险的用法。2006 年,他启动了 Rust 项目,目标很明确:系统编程里不再有内存 bug。
早期 Rust 语法古怪,入门曲线陡得吓人,社区调侃它是'神的语言'。但一步步迭代,到 2010 年 0.1 版时,所有权系统的雏形已经出来了。真正的转折是 2015 年 5 月发布的 1.0,这意味着语言稳定性有了保障,不再是实验室玩具。
Rust 的内存管理不走寻常路:不靠 GC,也不靠手动 malloc/free,而是靠所有权这一套规则在编译期卡死你。每个值都有唯一的所有者,离开作用域就自动释放。借用的时候,要么一个可变引用,要么多个不可变引用——两者不能共存。一开始写会觉得编译器很烦,但编译一通过,你基本不用担心数据竞争和悬垂指针。这种编译时做的防御,线上跑起来特别稳。
生命周期标注可能让新手头大,但理解后就明白了:你是在告诉编译器,返回的引用和传入参数活的一样长。例如 longest 函数里,'a 保证了返回的字符串切片不会野掉。这种设计让你用起来像高级语言,心里又清楚内存不会乱。
fn longest<'a>(x: &'a str, y: &'a str) -> &'a str {
if x.len() > y.len() {
x
} else {
y
}
}
Rust 还常吹嘘'零成本抽象'——高级特性在编译时展开成跟手写汇编一样快的机器码。用智能指针、闭包不会有额外的运行时开销,性能榨得很干净。这一点对于需要极致性能的场景非常关键。
Rust 现在已经不是只能写浏览器的语言了。WebAssembly 热起来后,Figma 用 Rust 重写了核心模块,前端性能直接翻了几倍。区块链项目里,Solana 的智能合约用 Rust 写,内存安全让合约漏洞少了很多。更狠的是,微软偷偷在 Windows 组件里用 Rust 替换 C++,连 Linux 内核都开始接纳 Rust 模块了。嵌入式领域,资源受限的设备上 Rust 比 C 稳,还不怎么占内存,用在无人机、智能手表上正合适。
Rust 的生态是它的一大优势。Cargo 一上手就解决依赖地狱,crates.io 上的库已经超过 10 万个,从网络到并发,该有的都有了。代码风格用 rustfmt 统一,clippy 给你审查建议,rust-analyzer 让编辑器很智能。整体开发体验跟现代化语言对齐了,虽然入门还是有点门槛。
跟 Go 比,Rust 没有那个简洁的协程模型,但类型系统强太多;C++ 背了太多历史包袱;Swift 基本只在苹果生态里混。Rust 在系统编程这个位子上,的确没有太多对手。不过学起来确实费劲,但学会了代码质量上一个大台阶。未来方向很多,Web 框架、AI 框架(比如 Burn)、量子计算模拟、甚至航天软件都在试水。Bjarne Stroustrup 自己也说 Rust 解决了 C++ 想解决但没做好的问题。
十几年走过来,Rust 从 Mozilla 的边角项目变成了独立基金会撑腰的重要语言。它重新定义了内存安全,也让系统编程不再那么原始。学 Rust 肯定要掉头发,但等你过了那个拐点,看自己写的代码都会更踏实。接下来的基础设施软件里,Rust 的身影只会越来越多。


