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