Rust 借用检查器的别名新解法
An alias-based formulation of the borrow checker (2018)
自 Rust All Hands 会议后,我一直在尝试一种全新的 Rust 借用检查器实现方案。目标是克服当前 NLL 提案的不足,同时提升计算速度。原型已通过完整的 NLL 测试套件,还能处理一些现有分析无法解决的案例。虽然目前性能尚待优化,但我对未来的改进充满期待。这次提案的核心转变在于将生命周期重新定义为“借用集合”,而非程序控制流中的点。这意味着编译器对代码的理解方式发生了微妙变化,可能影响未来的语言特性。不过,对于普通用户而言,借用检查器的行为基本保持不变。
当你对类型如 &'a i32 进行思考时,'a 的含义发生了根本转变:它不再对应源代码或控制流图的某一部分,而是代表一组借用表达式,即一组贷款。