Add HELP
to test
This commit is contained in:
parent
78d29ad8d6
commit
f216bac861
@ -4,12 +4,14 @@ fn iter<T>(vec: Vec<T>) -> impl Iterator<Item = T> {
|
|||||||
fn foo() {
|
fn foo() {
|
||||||
let vec = vec!["one", "two", "three"];
|
let vec = vec!["one", "two", "three"];
|
||||||
while let Some(item) = iter(vec).next() { //~ ERROR use of moved value
|
while let Some(item) = iter(vec).next() { //~ ERROR use of moved value
|
||||||
|
//~^ HELP consider moving the expression out of the loop so it is only moved once
|
||||||
println!("{:?}", item);
|
println!("{:?}", item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fn bar() {
|
fn bar() {
|
||||||
let vec = vec!["one", "two", "three"];
|
let vec = vec!["one", "two", "three"];
|
||||||
loop {
|
loop {
|
||||||
|
//~^ HELP consider moving the expression out of the loop so it is only moved once
|
||||||
let Some(item) = iter(vec).next() else { //~ ERROR use of moved value
|
let Some(item) = iter(vec).next() else { //~ ERROR use of moved value
|
||||||
break;
|
break;
|
||||||
};
|
};
|
||||||
@ -19,7 +21,9 @@ fn bar() {
|
|||||||
fn baz() {
|
fn baz() {
|
||||||
let vec = vec!["one", "two", "three"];
|
let vec = vec!["one", "two", "three"];
|
||||||
loop {
|
loop {
|
||||||
|
//~^ HELP consider moving the expression out of the loop so it is only moved once
|
||||||
let item = iter(vec).next(); //~ ERROR use of moved value
|
let item = iter(vec).next(); //~ ERROR use of moved value
|
||||||
|
//~^ HELP consider cloning
|
||||||
if item.is_none() {
|
if item.is_none() {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -29,6 +33,7 @@ fn baz() {
|
|||||||
fn qux() {
|
fn qux() {
|
||||||
let vec = vec!["one", "two", "three"];
|
let vec = vec!["one", "two", "three"];
|
||||||
loop {
|
loop {
|
||||||
|
//~^ HELP consider moving the expression out of the loop so it is only moved once
|
||||||
if let Some(item) = iter(vec).next() { //~ ERROR use of moved value
|
if let Some(item) = iter(vec).next() { //~ ERROR use of moved value
|
||||||
println!("{:?}", item);
|
println!("{:?}", item);
|
||||||
break;
|
break;
|
||||||
@ -39,6 +44,7 @@ fn zap() {
|
|||||||
loop {
|
loop {
|
||||||
let vec = vec!["one", "two", "three"];
|
let vec = vec!["one", "two", "three"];
|
||||||
loop {
|
loop {
|
||||||
|
//~^ HELP consider moving the expression out of the loop so it is only moved once
|
||||||
loop {
|
loop {
|
||||||
loop {
|
loop {
|
||||||
if let Some(item) = iter(vec).next() { //~ ERROR use of moved value
|
if let Some(item) = iter(vec).next() { //~ ERROR use of moved value
|
||||||
|
@ -23,12 +23,13 @@ LL ~ while let Some(item) = value.next() {
|
|||||||
|
|
|
|
||||||
|
|
||||||
error[E0382]: use of moved value: `vec`
|
error[E0382]: use of moved value: `vec`
|
||||||
--> $DIR/recreating-value-in-loop-condition.rs:13:31
|
--> $DIR/recreating-value-in-loop-condition.rs:15:31
|
||||||
|
|
|
|
||||||
LL | let vec = vec!["one", "two", "three"];
|
LL | let vec = vec!["one", "two", "three"];
|
||||||
| --- move occurs because `vec` has type `Vec<&str>`, which does not implement the `Copy` trait
|
| --- move occurs because `vec` has type `Vec<&str>`, which does not implement the `Copy` trait
|
||||||
LL | loop {
|
LL | loop {
|
||||||
| ---- inside of this loop
|
| ---- inside of this loop
|
||||||
|
LL |
|
||||||
LL | let Some(item) = iter(vec).next() else {
|
LL | let Some(item) = iter(vec).next() else {
|
||||||
| ^^^ value moved here, in previous iteration of loop
|
| ^^^ value moved here, in previous iteration of loop
|
||||||
|
|
|
|
||||||
@ -43,16 +44,18 @@ help: consider moving the expression out of the loop so it is only moved once
|
|||||||
|
|
|
|
||||||
LL ~ let mut value = iter(vec);
|
LL ~ let mut value = iter(vec);
|
||||||
LL ~ loop {
|
LL ~ loop {
|
||||||
|
LL |
|
||||||
LL ~ let Some(item) = value.next() else {
|
LL ~ let Some(item) = value.next() else {
|
||||||
|
|
|
|
||||||
|
|
||||||
error[E0382]: use of moved value: `vec`
|
error[E0382]: use of moved value: `vec`
|
||||||
--> $DIR/recreating-value-in-loop-condition.rs:22:25
|
--> $DIR/recreating-value-in-loop-condition.rs:25:25
|
||||||
|
|
|
|
||||||
LL | let vec = vec!["one", "two", "three"];
|
LL | let vec = vec!["one", "two", "three"];
|
||||||
| --- move occurs because `vec` has type `Vec<&str>`, which does not implement the `Copy` trait
|
| --- move occurs because `vec` has type `Vec<&str>`, which does not implement the `Copy` trait
|
||||||
LL | loop {
|
LL | loop {
|
||||||
| ---- inside of this loop
|
| ---- inside of this loop
|
||||||
|
LL |
|
||||||
LL | let item = iter(vec).next();
|
LL | let item = iter(vec).next();
|
||||||
| ^^^ value moved here, in previous iteration of loop
|
| ^^^ value moved here, in previous iteration of loop
|
||||||
|
|
|
|
||||||
@ -67,6 +70,7 @@ help: consider moving the expression out of the loop so it is only moved once
|
|||||||
|
|
|
|
||||||
LL ~ let mut value = iter(vec);
|
LL ~ let mut value = iter(vec);
|
||||||
LL ~ loop {
|
LL ~ loop {
|
||||||
|
LL |
|
||||||
LL ~ let item = value.next();
|
LL ~ let item = value.next();
|
||||||
|
|
|
|
||||||
help: consider cloning the value if the performance cost is acceptable
|
help: consider cloning the value if the performance cost is acceptable
|
||||||
@ -75,12 +79,13 @@ LL | let item = iter(vec.clone()).next();
|
|||||||
| ++++++++
|
| ++++++++
|
||||||
|
|
||||||
error[E0382]: use of moved value: `vec`
|
error[E0382]: use of moved value: `vec`
|
||||||
--> $DIR/recreating-value-in-loop-condition.rs:32:34
|
--> $DIR/recreating-value-in-loop-condition.rs:37:34
|
||||||
|
|
|
|
||||||
LL | let vec = vec!["one", "two", "three"];
|
LL | let vec = vec!["one", "two", "three"];
|
||||||
| --- move occurs because `vec` has type `Vec<&str>`, which does not implement the `Copy` trait
|
| --- move occurs because `vec` has type `Vec<&str>`, which does not implement the `Copy` trait
|
||||||
LL | loop {
|
LL | loop {
|
||||||
| ---- inside of this loop
|
| ---- inside of this loop
|
||||||
|
LL |
|
||||||
LL | if let Some(item) = iter(vec).next() {
|
LL | if let Some(item) = iter(vec).next() {
|
||||||
| ^^^ value moved here, in previous iteration of loop
|
| ^^^ value moved here, in previous iteration of loop
|
||||||
|
|
|
|
||||||
@ -95,16 +100,18 @@ help: consider moving the expression out of the loop so it is only moved once
|
|||||||
|
|
|
|
||||||
LL ~ let mut value = iter(vec);
|
LL ~ let mut value = iter(vec);
|
||||||
LL ~ loop {
|
LL ~ loop {
|
||||||
|
LL |
|
||||||
LL ~ if let Some(item) = value.next() {
|
LL ~ if let Some(item) = value.next() {
|
||||||
|
|
|
|
||||||
|
|
||||||
error[E0382]: use of moved value: `vec`
|
error[E0382]: use of moved value: `vec`
|
||||||
--> $DIR/recreating-value-in-loop-condition.rs:44:46
|
--> $DIR/recreating-value-in-loop-condition.rs:50:46
|
||||||
|
|
|
|
||||||
LL | let vec = vec!["one", "two", "three"];
|
LL | let vec = vec!["one", "two", "three"];
|
||||||
| --- move occurs because `vec` has type `Vec<&str>`, which does not implement the `Copy` trait
|
| --- move occurs because `vec` has type `Vec<&str>`, which does not implement the `Copy` trait
|
||||||
LL | loop {
|
LL | loop {
|
||||||
| ---- inside of this loop
|
| ---- inside of this loop
|
||||||
|
LL |
|
||||||
LL | loop {
|
LL | loop {
|
||||||
| ---- inside of this loop
|
| ---- inside of this loop
|
||||||
LL | loop {
|
LL | loop {
|
||||||
@ -120,24 +127,26 @@ LL | fn iter<T>(vec: Vec<T>) -> impl Iterator<Item = T> {
|
|||||||
| |
|
| |
|
||||||
| in this function
|
| in this function
|
||||||
note: verify that your loop breaking logic is correct
|
note: verify that your loop breaking logic is correct
|
||||||
--> $DIR/recreating-value-in-loop-condition.rs:46:25
|
--> $DIR/recreating-value-in-loop-condition.rs:52:25
|
||||||
|
|
|
|
||||||
LL | loop {
|
LL | loop {
|
||||||
| ----
|
| ----
|
||||||
LL | let vec = vec!["one", "two", "three"];
|
LL | let vec = vec!["one", "two", "three"];
|
||||||
LL | loop {
|
LL | loop {
|
||||||
| ----
|
| ----
|
||||||
|
LL |
|
||||||
LL | loop {
|
LL | loop {
|
||||||
| ----
|
| ----
|
||||||
LL | loop {
|
LL | loop {
|
||||||
| ----
|
| ----
|
||||||
...
|
...
|
||||||
LL | break;
|
LL | break;
|
||||||
| ^^^^^ this `break` exits the loop at line 43
|
| ^^^^^ this `break` exits the loop at line 49
|
||||||
help: consider moving the expression out of the loop so it is only moved once
|
help: consider moving the expression out of the loop so it is only moved once
|
||||||
|
|
|
|
||||||
LL ~ let mut value = iter(vec);
|
LL ~ let mut value = iter(vec);
|
||||||
LL ~ loop {
|
LL ~ loop {
|
||||||
|
LL |
|
||||||
LL | loop {
|
LL | loop {
|
||||||
LL | loop {
|
LL | loop {
|
||||||
LL ~ if let Some(item) = value.next() {
|
LL ~ if let Some(item) = value.next() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user