【发布时间】:2018-04-15 12:21:58
【问题描述】:
在借来的RefCell<&mut T>(即Ref<&mut T>)上调用方法按预期工作,但我似乎无法将它传递给函数。考虑以下代码:
use std::cell::RefCell;
fn main() {
let mut nums = vec![1, 2, 3];
foo(&mut nums);
println!("{:?}", nums);
}
fn foo(nums: &mut Vec<usize>) {
let num_cell = RefCell::new(nums);
num_cell.borrow_mut().push(4);
push_5(*num_cell.borrow_mut());
}
fn push_5(nums: &mut Vec<usize>) {
nums.push(4);
}
num_cell.borrow_mut().push(4) 有效,但 push_5(*num_cell.borrow_mut()) 出现以下错误:
error[E0389]: cannot borrow data mutably in a `&` reference
--> src/main.rs:14:12
|
14 | push_5(*num_cell.borrow_mut());
| ^^^^^^^^^^^^^^^^^^^^^^ assignment into an immutable reference
在取消引用Ref 之后,我希望在里面得到可变引用,所以这个错误对我来说真的没有意义。什么给了?
【问题讨论】:
标签: rust