Fn traits
The three traits that say how often a closure can be called and what it may do to its captures.
FnOnce closures can be called at least once, FnMut ones repeatedly with mutable access to captures, Fn ones repeatedly through a shared reference; every Fn is FnMut, and every FnMut is FnOnce.
Examples
fn run_twice<F: Fn()>(task: F)rejects|| laps += 1with E0525: that closure changes a capture, so it is onlyFnMut.A
moveclosure whose body doeslet sent = receipt;is onlyFnOnce, so calling it twice fails with E0382.
See also