| error[E0382]: use of moved value: `f` |
| --> $DIR/borrow-closures-instead-of-move.rs:3:22 |
| | |
| LL | fn takes_fn(f: impl Fn()) { |
| | - move occurs because `f` has type `impl Fn()`, which does not implement the `Copy` trait |
| LL | loop { |
| | ---- inside of this loop |
| LL | takes_fnonce(f); |
| | ^ value moved here, in previous iteration of loop |
| | |
| note: consider changing this parameter type in function `takes_fnonce` to borrow instead if owning the value isn't necessary |
| --> $DIR/borrow-closures-instead-of-move.rs:34:20 |
| | |
| LL | fn takes_fnonce(_: impl FnOnce()) {} |
| | ------------ ^^^^^^^^^^^^^ this parameter takes ownership of the value |
| | | |
| | in this function |
| help: if `impl Fn()` implemented `Clone`, you could clone the value |
| --> $DIR/borrow-closures-instead-of-move.rs:1:16 |
| | |
| LL | fn takes_fn(f: impl Fn()) { |
| | ^^^^^^^^^ consider constraining this type parameter with `Clone` |
| LL | loop { |
| LL | takes_fnonce(f); |
| | - you could clone this value |
| help: consider borrowing `f` |
| | |
| LL | takes_fnonce(&f); |
| | + |
| |
| error[E0382]: use of moved value: `m` |
| --> $DIR/borrow-closures-instead-of-move.rs:14:18 |
| | |
| LL | fn takes_fn_mut(m: impl FnMut()) { |
| | - move occurs because `m` has type `impl FnMut()`, which does not implement the `Copy` trait |
| LL | if maybe() { |
| LL | takes_fnonce(m); |
| | - value moved here |
| ... |
| LL | takes_fnonce(m); |
| | ^ value used here after move |
| | |
| note: consider changing this parameter type in function `takes_fnonce` to borrow instead if owning the value isn't necessary |
| --> $DIR/borrow-closures-instead-of-move.rs:34:20 |
| | |
| LL | fn takes_fnonce(_: impl FnOnce()) {} |
| | ------------ ^^^^^^^^^^^^^ this parameter takes ownership of the value |
| | | |
| | in this function |
| help: if `impl FnMut()` implemented `Clone`, you could clone the value |
| --> $DIR/borrow-closures-instead-of-move.rs:9:20 |
| | |
| LL | fn takes_fn_mut(m: impl FnMut()) { |
| | ^^^^^^^^^^^^ consider constraining this type parameter with `Clone` |
| LL | if maybe() { |
| LL | takes_fnonce(m); |
| | - you could clone this value |
| help: consider mutably borrowing `m` |
| | |
| LL | takes_fnonce(&mut m); |
| | ++++ |
| |
| error[E0382]: borrow of moved value: `closure` |
| --> $DIR/borrow-closures-instead-of-move.rs:25:5 |
| | |
| LL | takes_fnonce(closure); |
| | ------- value moved here |
| LL | |
| LL | closure(); |
| | ^^^^^^^ value borrowed here after move |
| | |
| note: closure cannot be moved more than once as it is not `Copy` due to moving the variable `x` out of its environment |
| --> $DIR/borrow-closures-instead-of-move.rs:21:9 |
| | |
| LL | x += 1; |
| | ^ |
| help: consider mutably borrowing `closure` |
| | |
| LL | takes_fnonce(&mut closure); |
| | ++++ |
| |
| error: aborting due to 3 previous errors |
| |
| For more information about this error, try `rustc --explain E0382`. |