rust-lang/rust#41962 has a new error with my new code. Incorporate that into my code.

In particular, I am adding an implicit injected borrow on the pattern
matches, and when we go around the loop, the compiler is reporting
that this injected borrow is conflicting with the move of the original
value when the match succeeds.
This commit is contained in:
Felix S. Klock II 2018-05-09 17:17:58 +02:00
parent 173315e353
commit 5c30dc85c2
2 changed files with 16 additions and 8 deletions

View File

@ -15,11 +15,12 @@ pub fn main(){
loop {
if let Some(thing) = maybe {
//~^ ERROR use of partially moved value: `maybe` (Ast) [E0382]
}
//~^^ ERROR use of partially moved value: `maybe` (Ast) [E0382]
//~| ERROR use of moved value: `(maybe as std::prelude::v1::Some).0` (Ast) [E0382]
//~| ERROR use of moved value: `maybe` (Mir) [E0382]
//~| ERROR use of moved value: `maybe` (Mir) [E0382]
//~| ERROR use of moved value: `maybe.0` (Mir) [E0382]
}
//~| ERROR borrow of moved value: `maybe` (Mir) [E0382]
}
}

View File

@ -23,16 +23,23 @@ LL | if let Some(thing) = maybe {
| ^ ----- value moved here
| _________|
| |
LL | | //~^ ERROR use of partially moved value: `maybe` (Ast) [E0382]
LL | | //~| ERROR use of moved value: `(maybe as std::prelude::v1::Some).0` (Ast) [E0382]
LL | | //~| ERROR use of moved value: `maybe` (Mir) [E0382]
LL | | //~| ERROR use of moved value: `maybe` (Mir) [E0382]
LL | | //~| ERROR use of moved value: `maybe.0` (Mir) [E0382]
LL | | }
| |_________^ value used here after move
|
= note: move occurs because `maybe` has type `std::option::Option<std::vec::Vec<bool>>`, which does not implement the `Copy` trait
error[E0382]: borrow of moved value: `maybe` (Mir)
--> $DIR/issue-41962.rs:17:9
|
LL | if let Some(thing) = maybe {
| ^ ----- value moved here
| _________|
| |
LL | | }
| |_________^ value borrowed here after move
|
= note: move occurs because `maybe` has type `std::option::Option<std::vec::Vec<bool>>`, which does not implement the `Copy` trait
error[E0382]: use of moved value: `maybe` (Mir)
--> $DIR/issue-41962.rs:17:16
|
@ -52,6 +59,6 @@ LL | if let Some(thing) = maybe {
|
= note: move occurs because `maybe.0` has type `std::vec::Vec<bool>`, which does not implement the `Copy` trait
error: aborting due to 5 previous errors
error: aborting due to 6 previous errors
For more information about this error, try `rustc --explain E0382`.