如何获得对存储在RefCell
中的 struct 的不同字段的可变引用.获得对 struct 的不同字段的可变引用有什么害处?
use std::cell::{RefCell, RefMut};
#[derive(Default)]
struct A {
a: i32,
b: u32,
}
fn main() {
let mut a_ref_cell: RefCell<A> = Default::default();
let mut a_obj = a_ref_cell.borrow_mut();
let a_ref = &mut a_obj.a;
let b_ref = &mut a_obj.b;
*a_ref = 2;
*b_ref = 78;
println!("{}, {}", *a_ref, *b_ref);
println!("Hello, world!");
}
误差率
error[E0499]: cannot borrow `a_obj` as mutable more than once at a time
--> src/lib.rs:62:22
|
61 | let a_ref = &mut a_obj.a;
| ----- first mutable borrow occurs here
62 | let b_ref = &mut a_obj.b;
| ^^^^^ second mutable borrow occurs here
63 |
64 | *a_ref = 2;
| ---------- first borrow later used here