RefCell与内部可变性 #

一、RefCell #

rust
use std::cell::RefCell;

fn main() {
    let data = RefCell::new(5);
    
    *data.borrow_mut() += 1;
    
    println!("{}", data.borrow());
}

二、内部可变性 #

rust
use std::cell::RefCell;

struct MockMessenger {
    sent_messages: RefCell<Vec<String>>,
}

impl MockMessenger {
    fn new() -> Self {
        MockMessenger {
            sent_messages: RefCell::new(vec![]),
        }
    }
    
    fn send(&self, message: &str) {
        self.sent_messages.borrow_mut().push(String::from(message));
    }
}

三、总结 #

本章学习了:

  • RefCell 使用
  • 内部可变性模式
最后更新:2026-03-27