rust语言学习笔记(指针三)RefCell<T>(单线程运行时借用检查)

  • 要么拥有任意数量的不可变引用(&T)。
  • 要么拥有唯一一个可变引用(&mut T)。
  • 两者不能同时存在。
  • 如果违反借用规则(例如同时获取可变和不可变借用),程序不会编译失败,而是会在运行时触发 ‌panic‌。
  • 它适用于‌单线程‌环境。
rust 复制代码
use std::cell::RefCell;

fn main() {
    let v = RefCell::new(10); // 创建一个可变的引用计数器
    {   // 只读借用
        let v1 = v.borrow(); // 只读借用
        println!("v1 只读借用: {}", v1);
    }
    // v1 只读借用离开作用域
    
    {   // 可变借用
        let mut v2 = v.borrow_mut(); // 只写借用
        *v2 = 20;
    }
    // v2 可变借用离开作用域
    
    println!("v2 只写借用: {}", v.borrow());  // 只读借用
}