如果我想正常“清空”切片,我可以这样做:
let mut data: &[u8] = &[1, 2, 3];
data = &[];
Run Code Online (Sandbox Code Playgroud)
但我正在使用一个返回 a 的库RefMut<&mut [u8]>,如果我尝试以相同的方式重置它:
let mut data: RefMut<&mut [u8]> = account.data.borrow_mut();
data = &[];
Run Code Online (Sandbox Code Playgroud)
我被告知我需要:
expected struct `RefMut`, found `&[_; 0]`
Run Code Online (Sandbox Code Playgroud)
我尝试这样的事情:
expected struct `RefMut`, found `&[_; 0]`
Run Code Online (Sandbox Code Playgroud)
但随后 c 在仍借用的情况下被丢弃。我是否以错误的方式处理这个问题?
您可以使用取消引用运算符写回RefCell.
let refcell: RefCell<&[u8]> = RefCell::new(&[1, 2, 3]);
{
let mut data = refcell.borrow_mut();
*data = &[];
// or equivalently, *refcell.borrow_mut() = &[];
}
println!("{:?}", refcell); // RefCell { value: [] }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
291 次 |
| 最近记录: |