| error[E0507]: cannot move out of `var`, a captured variable in an `FnMut` closure |
| --> $DIR/option-content-move2.rs:11:9 |
| | |
| LL | let mut var = None; |
| | ------- ---- move occurs because `var` has type `Option<NotCopyable>`, which does not implement the `Copy` trait |
| | | |
| | captured outer variable |
| LL | func(|| { |
| | -- captured by this `FnMut` closure |
| LL | // Shouldn't suggest `move ||.as_ref()` here |
| LL | move || { |
| | ^^^^^^^ `var` is moved here |
| LL | |
| LL | var = Some(NotCopyable); |
| | --- variable moved due to use in closure |
| | |
| help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once |
| --> $DIR/option-content-move2.rs:5:12 |
| | |
| LL | fn func<F: FnMut() -> H, H: FnMut()>(_: F) {} |
| | ^^^^^^^^^^^^ |
| note: if `NotCopyable` implemented `Clone`, you could clone the value |
| --> $DIR/option-content-move2.rs:1:1 |
| | |
| LL | struct NotCopyable; |
| | ^^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type |
| ... |
| LL | var = Some(NotCopyable); |
| | --- you could clone this value |
| |
| error[E0507]: cannot move out of `var`, a captured variable in an `FnMut` closure |
| --> $DIR/option-content-move2.rs:21:9 |
| | |
| LL | let mut var = None; |
| | ------- ---- move occurs because `var` has type `Option<NotCopyableButCloneable>`, which does not implement the `Copy` trait |
| | | |
| | captured outer variable |
| LL | func(|| { |
| | -- captured by this `FnMut` closure |
| LL | // Shouldn't suggest `move ||.as_ref()` nor to `clone()` here |
| LL | move || { |
| | ^^^^^^^ `var` is moved here |
| LL | |
| LL | var = Some(NotCopyableButCloneable); |
| | --- variable moved due to use in closure |
| | |
| help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once |
| --> $DIR/option-content-move2.rs:5:12 |
| | |
| LL | fn func<F: FnMut() -> H, H: FnMut()>(_: F) {} |
| | ^^^^^^^^^^^^ |
| |
| error: aborting due to 2 previous errors |
| |
| For more information about this error, try `rustc --explain E0507`. |