]> git.lizzy.rs Git - rust.git/blob - src/tools/clippy/tests/ui/needless_range_loop.rs
Merge commit '9809f5d21990d9e24b3e9876ea7da756fd4e9def' into libgccjit-codegen
[rust.git] / src / tools / clippy / tests / ui / needless_range_loop.rs
1 #![warn(clippy::needless_range_loop)]
2
3 static STATIC: [usize; 4] = [0, 1, 8, 16];
4 const CONST: [usize; 4] = [0, 1, 8, 16];
5 const MAX_LEN: usize = 42;
6
7 fn main() {
8     let mut vec = vec![1, 2, 3, 4];
9     let vec2 = vec![1, 2, 3, 4];
10     for i in 0..vec.len() {
11         println!("{}", vec[i]);
12     }
13
14     for i in 0..vec.len() {
15         let i = 42; // make a different `i`
16         println!("{}", vec[i]); // ok, not the `i` of the for-loop
17     }
18
19     for i in 0..vec.len() {
20         let _ = vec[i];
21     }
22
23     // ICE #746
24     for j in 0..4 {
25         println!("{:?}", STATIC[j]);
26     }
27
28     for j in 0..4 {
29         println!("{:?}", CONST[j]);
30     }
31
32     for i in 0..vec.len() {
33         println!("{} {}", vec[i], i);
34     }
35     for i in 0..vec.len() {
36         // not an error, indexing more than one variable
37         println!("{} {}", vec[i], vec2[i]);
38     }
39
40     for i in 0..vec.len() {
41         println!("{}", vec2[i]);
42     }
43
44     for i in 5..vec.len() {
45         println!("{}", vec[i]);
46     }
47
48     for i in 0..MAX_LEN {
49         println!("{}", vec[i]);
50     }
51
52     for i in 0..=MAX_LEN {
53         println!("{}", vec[i]);
54     }
55
56     for i in 5..10 {
57         println!("{}", vec[i]);
58     }
59
60     for i in 5..=10 {
61         println!("{}", vec[i]);
62     }
63
64     for i in 5..vec.len() {
65         println!("{} {}", vec[i], i);
66     }
67
68     for i in 5..10 {
69         println!("{} {}", vec[i], i);
70     }
71
72     // #2542
73     for i in 0..vec.len() {
74         vec[i] = Some(1).unwrap_or_else(|| panic!("error on {}", i));
75     }
76
77     // #3788
78     let test = Test {
79         inner: vec![1, 2, 3, 4],
80     };
81     for i in 0..2 {
82         println!("{}", test[i]);
83     }
84 }
85
86 struct Test {
87     inner: Vec<usize>,
88 }
89
90 impl std::ops::Index<usize> for Test {
91     type Output = usize;
92     fn index(&self, index: usize) -> &Self::Output {
93         &self.inner[index]
94     }
95 }