Rust 传递RefCell的内容<&;mut T>;函数
对借用的Rust 传递RefCell的内容<&;mut T>;函数,rust,Rust,对借用的RefCell(即Ref)调用方法的工作方式与预期相同,但我似乎无法将其传递给函数。考虑下面的代码: 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:
RefCell
(即Ref
)调用方法的工作方式与预期相同,但我似乎无法将其传递给函数。考虑下面的代码:
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);
}
在取消引用Ref
之后,我希望得到内部的可变引用,这样错误对我来说就没有意义了。有什么好处
push_5(*num_cell.borrow_mut())代码>
删除*
,编译器建议
错误[E0308]:类型不匹配
-->src/main.rs:14:12
|
14 | push_5(num_cell.borrow_mut());
| ^^^^^^^^^^^^^^^^^^^^^
| |
|应为可变引用,找到结构`std::cell::RefMut`
帮助:考虑在这里可变地借用:'MutNuthCyto.BooFuffMut.()
|
=注意:应为类型`&mut std::vec::vec`
找到类型“std::cell::RefMut”