Rollup merge of #68424 - estebank:suggest-borrow-for-non-copy-vec, r=davidtwco

Suggest borrowing `Vec<NonCopy>` in for loop

Partially address #64167.
This commit is contained in:
Tyler Mandry 2020-01-24 00:30:53 -08:00 committed by GitHub
commit eb769ed6b0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 69 additions and 4 deletions

View file

@ -0,0 +1,15 @@
// run-rustfix
#![allow(dead_code)]
struct Foo {
v: Vec<u32>,
}
impl Foo {
fn bar(&self) {
for _ in &self.v { //~ ERROR cannot move out of `self.v` which is behind a shared reference
}
}
}
fn main() {}

View file

@ -0,0 +1,15 @@
// run-rustfix
#![allow(dead_code)]
struct Foo {
v: Vec<u32>,
}
impl Foo {
fn bar(&self) {
for _ in self.v { //~ ERROR cannot move out of `self.v` which is behind a shared reference
}
}
}
fn main() {}

View file

@ -0,0 +1,12 @@
error[E0507]: cannot move out of `self.v` which is behind a shared reference
--> $DIR/for-i-in-vec.rs:10:18
|
LL | for _ in self.v {
| ^^^^^^
| |
| move occurs because `self.v` has type `std::vec::Vec<u32>`, which does not implement the `Copy` trait
| help: consider iterating over a slice of the `Vec<_>`'s content: `&self.v`
error: aborting due to previous error
For more information about this error, try `rustc --explain E0507`.