Rust: RefCellで囲んだFnMutはDerefMutが実装されていない
現象
f: RefCell<dyn FnMut()>>
とした時に
f.borrow_mut()() // この形式では呼べない
とは呼べず、
(&mut *f.borrow_mut())();
と呼ばなくてはいけない
調査
rust - why DerefMut is not implemented for `std::cell::RefMut<'_, [..]>` which wraps FnMut? - Stack Overflow
この記事によると上記のf.borrow_mut()()では呼べないとありました。
Cannot borrow as mutable despite DerefMut · Issue #51886 · rust-lang/rust · GitHub
このバグに関係しているかもとのことでした。