Don't suggest wrong snippet in closure

This commit is contained in:
Yuki Okushi 2019-12-11 23:04:29 +09:00
parent 27d6f55f47
commit fa199c5f27
3 changed files with 46 additions and 4 deletions

View file

@ -0,0 +1,16 @@
struct NotCopyable;
fn func<F: FnMut() -> H, H: FnMut()>(_: F) {}
fn parse() {
let mut var = None;
func(|| {
// Shouldn't suggest `move ||.as_ref()` here
move || {
//~^ ERROR: cannot move out of `var`
var = Some(NotCopyable);
}
});
}
fn main() {}

View file

@ -0,0 +1,18 @@
error[E0507]: cannot move out of `var`, a captured variable in an `FnMut` closure
--> $DIR/option-content-move2.rs:9:9
|
LL | let mut var = None;
| ------- captured outer variable
...
LL | move || {
| ^^^^^^^ move out of `var` occurs here
LL |
LL | var = Some(NotCopyable);
| ---
| |
| move occurs because `var` has type `std::option::Option<NotCopyable>`, which does not implement the `Copy` trait
| move occurs due to use in closure
error: aborting due to previous error
For more information about this error, try `rustc --explain E0507`.