4
私は可変変数を可変的に借りようとしています。 Deref
とDerefMut
はFoo
のために実装されますが、コンパイルは失敗していますDerefMutによるクロージャの変更可能な借用が機能しないのはなぜですか?
use std::ops::{Deref, DerefMut};
struct Foo;
impl Deref for Foo {
type Target = FnMut() + 'static;
fn deref(&self) -> &Self::Target {
unimplemented!()
}
}
impl DerefMut for Foo {
fn deref_mut(&mut self) -> &mut Self::Target {
unimplemented!()
}
}
fn main() {
let mut t = Foo;
t();
}
error[E0596]: cannot borrow immutable borrowed content as mutable
--> src/main.rs:20:5
|
20 | t();
| ^cannot borrow as mutable
't.deref_mut()()'作品:回避策としては、明示的に変更可能な参照を取得する必要があります。面白い。 –