我有一个结构体,它的字段引用了同一结构体中数组上的当前元素,使用Rc
. 我现在可以引用 thennums
字段中的任何元素:
use std::{cell::RefCell, rc::Rc};
struct ArrayTest {
nums: [u32; 8],
cur_num: Rc<RefCell<Option<u32>>>,
}
fn main() {
let mut slice = ArrayTest {
nums: [1, 2, 3, 4, 5, 6, 7, 8],
cur_num: Rc::new(RefCell::new(None)),
};
slice.cur_num = Rc::new(RefCell::new(Some(1)));
let ref mut t = slice.nums[3];
slice.cur_num = Rc::new(RefCell::new(Some(*t)));
println!("{:?}", slice.cur_num);
if let Some(ref mut t) = *slice.cur_num.borrow_mut() {
*t += 1;
};
println!("{:?}", slice.cur_num);
println!("{:?}", slice.nums);
}
当我尝试修改时出现问题cur_num
,因为我希望它在nums
数组上反映它的值。每当我尝试通过取消引用它来做到这一点时,它似乎只会改变cur_num
.
RefCell { value: Some(4) }
RefCell { value: Some(5) }
[1, 2, 3, 4, 5, 6, 7, 8]
为什么我不能在同一个结构中存储一个值和对该值的引用?是关于将值存储在同一个结构中的另一个主题,但答案没有显示可以移动值的情况,或者RefCell
.
有没有办法修改它,RefCell
以便我可以修改参考?