的运行时借用检查机制主要依赖于内部的一个计数器(borrow counter)以及 RAII(资源获取即初始化)模式的智能指针。 简单来说, 把 Rust 编译器在编译期做的借用检查(Borrow Checker)逻辑,搬到了运行期(Runtime)通过简单的整数加减判断来实现。 下面是详细的工作原理分解: 1. 内部结构 的内部大致包含两个部分: 1. 数据本身:类型为 的实例。 2. 借用状态计数器:通常是一个 (或类似的整数类型)。 2. 计数器的状态逻辑 这个 计数器的数值代表了当前的借用状态: (Unused): 当前没有任何借用。既没有读,也没有写。 (Shared): 当前有 个不可变借用(active immutable borrows)。 (Exclusive): 当前有且仅有 1 个可变借用(active mutable borrow)。 3. 借用流程(Borrowing) 当你调用 或 时, 会检查计数器的值。 A. 不可变借用 当你调用 时: 1. 检查:查看计数器是否 (即是否等于 -1)。 2. 判断: 如果为 (说明正有人在修改数据),则触发 Pa...