1,725
社区成员
发帖
与我相关
我的任务
分享
上一条:Rust 内部可变性(`Internal mutability`) 下一条:RefCell
对于实现了Copy的类型,可以使用 `Cell<T>`,官方例子:https://doc.rust-lang.org/std/cell/struct.Cell.html
改造下官方例子,官方例子里只改变了一次不可变借用的 Cell 成员,稍加改造可以多次修改:
use std::cell::Cell;
struct SomeStruct {
regular_field: u8,
special_field: Cell<u8>,
}
fn main() {
let my_struct = SomeStruct {
regular_field: 0,
special_field: Cell::new(1),
};
// 第1次不可变借用
let x = &my_struct;
// 修改1
x.special_field.set(11);
println!("{}", x.special_field.get());
// 第2次不可变借用
let y = &my_struct;
// 修改2
y.special_field.set(3);
println!("{}", x.special_field.get());
// 修改3
x.special_field.set(10);
println!("{}", x.special_field.get());
}