fn foo() { let foos = vec![String::new()]; let bars = vec![""]; let mut baz = vec![]; let mut qux = vec![]; for foo in foos { for bar in &bars { if foo == *bar { //~^ NOTE this reinitialization might get skipped //~| NOTE move occurs because `foo` has type `String` //~| NOTE inside of this loop //~| HELP consider moving the expression out of the loop //~| NOTE in this expansion of desugaring of `for` loop baz.push(foo); //~^ NOTE value moved here //~| HELP consider cloning the value continue; //~^ NOTE verify that your loop breaking logic is correct //~| NOTE this `continue` advances the loop at $DIR/nested-loop-moved-value-wrong-continue.rs:6:23 } } qux.push(foo); //~^ ERROR use of moved value //~| NOTE value used here } } fn main() { let foos = vec![String::new()]; let bars = vec![""]; let mut baz = vec![]; let mut qux = vec![]; for foo in foos { //~^ NOTE this reinitialization might get skipped //~| NOTE move occurs because `foo` has type `String` for bar in &bars { //~^ NOTE inside of this loop //~| HELP consider moving the expression out of the loop //~| NOTE in this expansion of desugaring of `for` loop if foo == *bar { baz.push(foo); //~^ NOTE value moved here //~| HELP consider cloning the value continue; //~^ NOTE verify that your loop breaking logic is correct //~| NOTE this `continue` advances the loop at line 33 } } qux.push(foo); //~^ ERROR use of moved value //~| NOTE value used here } }