| fn iter<T>(vec: Vec<T>) -> impl Iterator<Item = T> { |
| vec.into_iter() |
| } |
| fn foo() { |
| let vec = vec!["one", "two", "three"]; |
| 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); |
| } |
| } |
| fn bar() { |
| let vec = vec!["one", "two", "three"]; |
| 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 |
| break; |
| }; |
| println!("{:?}", item); |
| } |
| } |
| fn baz() { |
| let vec = vec!["one", "two", "three"]; |
| 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 |
| //~^ HELP consider cloning |
| if item.is_none() { |
| break; |
| } |
| println!("{:?}", item); |
| } |
| } |
| fn qux() { |
| let vec = vec!["one", "two", "three"]; |
| 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 |
| println!("{:?}", item); |
| break; |
| } |
| } |
| } |
| fn zap() { |
| loop { |
| let vec = vec!["one", "two", "three"]; |
| loop { |
| //~^ HELP consider moving the expression out of the loop so it is only moved once |
| loop { |
| loop { |
| if let Some(item) = iter(vec).next() { //~ ERROR use of moved value |
| println!("{:?}", item); |
| break; |
| } |
| } |
| } |
| } |
| } |
| } |
| fn main() { |
| foo(); |
| bar(); |
| baz(); |
| qux(); |
| zap(); |
| } |