error[E0525]: expected a closure that implements the `Fn` trait, but this closure only implements `FnMut` --> $DIR/issue-34349.rs:16:17 | LL | let diary = || { | ^^ this closure implements `FnMut`, not `Fn` LL | farewell.push_str("!!!"); | -------- closure is `FnMut` because it mutates the variable `farewell` here ... LL | apply(diary); | ----- ----- the requirement to implement `Fn` derives from here | | | required by a bound introduced by this call | note: required by a bound in `apply` --> $DIR/issue-34349.rs:11:32 | LL | fn apply(f: F) where F: Fn() { | ^^^^ required by this bound in `apply` error: aborting due to previous error For more information about this error, try `rustc --explain E0525`.