3 #![warn(clippy::while_let_on_iterator)]
4 #![allow(clippy::never_loop, unreachable_code, unused_mut)]
21 while let None = iter.next() {} // this is fine (if nonsensical)
24 if let Some(x) = iter.next() {
29 // the following shouldn't warn because it can't be written with a for loop
30 let mut iter = 1u32..20;
31 while let Some(_) = iter.next() {
32 println!("next: {:?}", iter.next())
36 let mut iter = 1u32..20;
37 while let Some(_) = iter.next() {
38 println!("next: {:?}", iter.next());
42 let mut iter = 1u32..20;
43 while let Some(_) = iter.next() {
46 println!("Remaining iter {:?}", iter);
49 let mut iter = 1u32..20;
50 while let Some(_) = iter.next() {
60 // consume all the 42s
61 while let Some(&42) = b.next() {}
66 while let Some(&(1, 2, 3)) = b.next() {}
71 while let Some(&None) = b.next() {}
73 /* This gives “refutable pattern in `for` loop binding: `&_` not covered”
75 for &(1, 2, 3) in b {}
76 for &Option::None in b.next() {}
84 // x is reused, so don't lint here
85 while let Some(_) = y.next() {}
90 while let Some(_) = y.next() {
91 // y is reused, don't lint
98 // use a for loop here
104 use std::collections::HashSet;
105 let mut values = HashSet::new();
108 while let Some(&value) = values.iter().next() {
109 values.remove(&value);
114 // This should not cause an ICE and suggest:
116 // for _ in values.iter() {}
118 use std::collections::HashSet;
119 let mut values = HashSet::new();
122 for _ in values.iter() {
123 // FIXME(flip1995): Linting this with the following line uncommented is a FP, see #1654
124 // values.remove(&1);
129 let array = [Some(0), None, Some(1)];
130 let mut iter = array.iter();
132 while let Some(elem) = iter.next() {
133 let _ = elem.or_else(|| *iter.next()?);