rust/tests/ui/closures/wrong-closure-arg-suggestion-125325.rs

30 lines
648 B
Rust

// Regression test for #125325
// Tests that we suggest changing an `impl Fn` param
// to `impl FnMut` when the provided closure arg
// is trying to mutate the closure env.
// Ensures that it works that way for both
// functions and methods
struct S;
impl S {
fn assoc_func(&self, _f: impl Fn()) -> usize {
0
}
}
fn func(_f: impl Fn()) -> usize {
0
}
fn test_func(s: &S) -> usize {
let mut x = ();
s.assoc_func(|| x = ());
//~^ cannot assign to `x`, as it is a captured variable in a `Fn` closure
func(|| x = ())
//~^ cannot assign to `x`, as it is a captured variable in a `Fn` closure
}
fn main() {}