📚学习·
Rust 学习手记:所有权是个好东西
✦ Rust✦ 编程语言
初见所有权的困惑
第一次读到 Rust 的所有权规则时,我的反应和大多数人一样:这编译器怎么这么烦人?一个简单的字符串赋值都要 move 来 borrow 去,我只是想把一个变量传给函数而已!
但写了两个月之后,我突然在某天调试一个 Go 写的并发程序时顿悟了。那个 bug 是两个 goroutine 同时修改了一个 map,没有任何同步保护,导致运行时 panic。如果在 Rust 里,这段代码根本过不了编译。所有权系统不是在为难你,它是在替你管理那些你根本意识不到的技术债。
从抵触到理解
现在回头看,所有权、借用、生命周期这些概念,本质上是在用类型系统建模资源管理。C++ 程序员靠 RAII 和智能指针,Go 程序员靠 channel 通信,而 Rust 选择在编译期算清楚每一块内存的归属。这不是过度设计,这是把"谁负责释放"这个终极问题放在了正确的位置上。
还在学,但已经开始喜欢上这种"编译器替你 Code Review"的感觉了。