Rust 如何在结构中使用选项类型获得对QCell的可变访问
我用的是板条箱。我有一个Rust 如何在结构中使用选项类型获得对QCell的可变访问,rust,Rust,我用的是板条箱。我有一个struct MyStruct,其中有一个选项。现在我想获得对内部QCell的可变访问权。代码如下: #[derive(Default)] struct MyStruct { pub val: i32, pub item: Option<Rc<QCell<MyStruct>>> } fn main() { let mut owner = QCellOwner::new(); let struct1 =
struct MyStruct
,其中有一个选项
。现在我想获得对内部QCell
的可变访问权。代码如下:
#[derive(Default)]
struct MyStruct {
pub val: i32,
pub item: Option<Rc<QCell<MyStruct>>>
}
fn main() {
let mut owner = QCellOwner::new();
let struct1 = Rc::new(QCell::new(&owner, MyStruct { ..Default::default() }));
let struct2 = Rc::new(QCell::new(&owner, MyStruct { ..Default::default() }));
// Point struct2 from struct1.item
owner.rw(struct1.borrow()).item = Some(Rc::clone(&struct2));
// Get a mutable access to struct2 from struct1.item
if let Some(v) = &owner.rw(struct1.borrow()).item {
owner.rw(v.borrow()).val = 123;
}
}
如何从struct1.item
设置struct2
的val
error[E0499]: cannot borrow `owner` as mutable more than once at a time
--> src/main.rs:xx:x
|
xx | if let Some(v) = &owner.rw(struct1.borrow()).item {
| ----- first mutable borrow occurs here
xx | owner.rw(v.borrow()).val = 123;
| ^^^^^ - first borrow later used here
| |
| second mutable borrow occurs here