Hello,
the code below implements a simple Callback struct that contains a boxed FnMut. I implemented DerefMut to be able to call it.
The call through DerefMut however only works when not using a &mut reference (using the &mut * trick I found here).

The error message when using a &mut reference is baffling, because it talks about & references, which I can only explain when Deref is called instead of DerefMut.

Is there a way to make this work when I already have a &mut reference, or must I explicitly call deref_mut()?

Deref / DerefMut are nice sugar when Rust can figure out it needs to use it, which it clearly cannot when dealing with the Fn / FnMut / FnOnce calling sugar (i.e., the () operator).

The best thing you can do, is use a new borrowing binding like callback_ref, except it uses deref_mut() logic instead of just a &mut _ borrow. I have named this operatior as_FnMut for clarity, and, as a last improvement, I have replaced the double indirection of &mut Box<dyn ...> by &mut dyn ...: