]> git.lizzy.rs Git - rust.git/blob - tests/ui/match_on_vec_items.rs
Auto merge of #5522 - CrazyRoka:match_vec_item, r=phansch
[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 main() {
124     match_with_wildcard();
125     match_without_wildcard();
126     match_wildcard_and_action();
127     match_vec_ref();
128     match_with_get();
129     match_with_array();
130 }