Don't suggest wrong snippet in closure
This commit is contained in:
parent
27d6f55f47
commit
fa199c5f27
3 changed files with 46 additions and 4 deletions
16
src/test/ui/suggestions/option-content-move2.rs
Normal file
16
src/test/ui/suggestions/option-content-move2.rs
Normal 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() {}
|
||||
18
src/test/ui/suggestions/option-content-move2.stderr
Normal file
18
src/test/ui/suggestions/option-content-move2.stderr
Normal 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`.
|
||||
Loading…
Add table
Add a link
Reference in a new issue