Tor*_*nny 6 closures mutable rust
我想将一个FnMut
闭包包装成RefCell
如下所示:
fn borrow_mut_closure() {
let mut temp = 3i32;
let cl = RefCell::new(move || {
temp += 1;
println!("{}", temp);
});
cl.borrow_mut()();
}
Run Code Online (Sandbox Code Playgroud)
但令我惊讶的是,编译器报告:
cannot borrow data in a dereference of `std::cell::RefMut<'_, [closure@src/main.rs:17:25: 20:4 temp:i32]>` as mutable
cannot borrow as mutable
help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `std::cell::RefMut<'_, [closure@src/main.rs:17:25: 20:4 temp:i32]>`rustc(E0596)
Run Code Online (Sandbox Code Playgroud)
但为什么不实施呢?我怎样才能克服这个问题?
这看起来像是一个编译器错误。看起来这可能是这里报告的同一问题:尽管 DerefMut ,但无法借用可变的。
如果您更改,您的代码将起作用
cl.borrow_mut()();
Run Code Online (Sandbox Code Playgroud)
相反是
(&mut *cl.borrow_mut())();
Run Code Online (Sandbox Code Playgroud)
在调用之前显式取消引用该值作为可变值。
归档时间: |
|
查看次数: |
8977 次 |
最近记录: |