]> git.lizzy.rs Git - rust.git/blob - tests/ui/match_on_vec_items.rs
Auto merge of #68717 - petrochenkov:stabexpat, r=varkor
[rust.git] / tests / ui / match_on_vec_items.rs
1 #![warn(clippy::match_on_vec_items)]
2
3 fn match_with_wildcard() {
4     let arr = vec![0, 1, 2, 3];
5     let range = 1..3;
6     let idx = 1;
7
8     // Lint, may panic
9     match arr[idx] {
10         0 => println!("0"),
11         1 => println!("1"),
12         _ => {},
13     }
14
15     // Lint, may panic
16     match arr[range] {
17         [0, 1] => println!("0 1"),
18         [1, 2] => println!("1 2"),
19         _ => {},
20     }
21 }
22
23 fn match_without_wildcard() {
24     let arr = vec![0, 1, 2, 3];
25     let range = 1..3;
26     let idx = 2;
27
28     // Lint, may panic
29     match arr[idx] {
30         0 => println!("0"),
31         1 => println!("1"),
32         num => {},
33     }
34
35     // Lint, may panic
36     match arr[range] {
37         [0, 1] => println!("0 1"),
38         [1, 2] => println!("1 2"),
39         [ref sub @ ..] => {},
40     }
41 }
42
43 fn match_wildcard_and_action() {
44     let arr = vec![0, 1, 2, 3];
45     let range = 1..3;
46     let idx = 3;
47
48     // Lint, may panic
49     match arr[idx] {
50         0 => println!("0"),
51         1 => println!("1"),
52         _ => println!("Hello, World!"),
53     }
54
55     // Lint, may panic
56     match arr[range] {
57         [0, 1] => println!("0 1"),
58         [1, 2] => println!("1 2"),
59         _ => println!("Hello, World!"),
60     }
61 }
62
63 fn match_vec_ref() {
64     let arr = &vec![0, 1, 2, 3];
65     let range = 1..3;
66     let idx = 3;
67
68     // Lint, may panic
69     match arr[idx] {
70         0 => println!("0"),
71         1 => println!("1"),
72         _ => {},
73     }
74
75     // Lint, may panic
76     match arr[range] {
77         [0, 1] => println!("0 1"),
78         [1, 2] => println!("1 2"),
79         _ => {},
80     }
81 }
82
83 fn match_with_get() {
84     let arr = vec![0, 1, 2, 3];
85     let range = 1..3;
86     let idx = 3;
87
88     // Ok
89     match arr.get(idx) {
90         Some(0) => println!("0"),
91         Some(1) => println!("1"),
92         _ => {},
93     }
94
95     // Ok
96     match arr.get(range) {
97         Some(&[0, 1]) => println!("0 1"),
98         Some(&[1, 2]) => println!("1 2"),
99         _ => {},
100     }
101 }
102
103 fn match_with_array() {
104     let arr = [0, 1, 2, 3];
105     let range = 1..3;
106     let idx = 3;
107
108     // Ok
109     match arr[idx] {
110         0 => println!("0"),
111         1 => println!("1"),
112         _ => {},
113     }
114
115     // Ok
116     match arr[range] {
117         [0, 1] => println!("0 1"),
118         [1, 2] => println!("1 2"),
119         _ => {},
120     }
121 }
122
123 fn match_with_endless_range() {
124     let arr = vec![0, 1, 2, 3];
125     let range = ..;
126
127     // Ok
128     match arr[range] {
129         [0, 1] => println!("0 1"),
130         [1, 2] => println!("1 2"),
131         [0, 1, 2, 3] => println!("0, 1, 2, 3"),
132         _ => {},
133     }
134
135     // Ok
136     match arr[..] {
137         [0, 1] => println!("0 1"),
138         [1, 2] => println!("1 2"),
139         [0, 1, 2, 3] => println!("0, 1, 2, 3"),
140         _ => {},
141     }
142 }
143
144 fn main() {
145     match_with_wildcard();
146     match_without_wildcard();
147     match_wildcard_and_action();
148     match_vec_ref();
149     match_with_get();
150     match_with_array();
151     match_with_endless_range();
152 }