RefCell 与 Cell 基本相同,区别在于 RefCell 读取内容时,返回的是引用,本质上是一个指针。这是因为 RefCell 要包装的数据没有实现 Copy 特性。代码示例如下:
use std::cell::{
Ref, RefCell};
fn main() {
let x = RefCell::new("good".to_string());let a = &x;let b = &x;*a.borrow_mut() = "nice".to_string();*b.borrow_mut() = "best".to_string();let y: Ref<String> = x.borrow();println!("x = {:?}", x);println!("y = {:?}", y);
}
---------------------------------------------------
>cargo run
x = RefCell {
value: "best" }
y = "best"
rust 的这套工具确实做的很漂亮呀!