]>
Commit | Line | Data |
---|---|---|
f20569fa XL |
1 | // run-rustfix |
2 | #![allow(unused_mut, clippy::from_iter_instead_of_collect)] | |
3 | #![deny(clippy::get_unwrap)] | |
4 | ||
5 | use std::collections::BTreeMap; | |
6 | use std::collections::HashMap; | |
7 | use std::collections::VecDeque; | |
8 | use std::iter::FromIterator; | |
9 | ||
10 | struct GetFalsePositive { | |
11 | arr: [u32; 3], | |
12 | } | |
13 | ||
14 | impl GetFalsePositive { | |
15 | fn get(&self, pos: usize) -> Option<&u32> { | |
16 | self.arr.get(pos) | |
17 | } | |
18 | fn get_mut(&mut self, pos: usize) -> Option<&mut u32> { | |
19 | self.arr.get_mut(pos) | |
20 | } | |
21 | } | |
22 | ||
23 | fn main() { | |
24 | let mut boxed_slice: Box<[u8]> = Box::new([0, 1, 2, 3]); | |
25 | let mut some_slice = &mut [0, 1, 2, 3]; | |
26 | let mut some_vec = vec![0, 1, 2, 3]; | |
27 | let mut some_vecdeque: VecDeque<_> = some_vec.iter().cloned().collect(); | |
28 | let mut some_hashmap: HashMap<u8, char> = HashMap::from_iter(vec![(1, 'a'), (2, 'b')]); | |
29 | let mut some_btreemap: BTreeMap<u8, char> = BTreeMap::from_iter(vec![(1, 'a'), (2, 'b')]); | |
30 | let mut false_positive = GetFalsePositive { arr: [0, 1, 2] }; | |
31 | ||
32 | { | |
33 | // Test `get().unwrap()` | |
34 | let _ = boxed_slice.get(1).unwrap(); | |
35 | let _ = some_slice.get(0).unwrap(); | |
36 | let _ = some_vec.get(0).unwrap(); | |
37 | let _ = some_vecdeque.get(0).unwrap(); | |
38 | let _ = some_hashmap.get(&1).unwrap(); | |
39 | let _ = some_btreemap.get(&1).unwrap(); | |
40 | let _ = false_positive.get(0).unwrap(); | |
41 | // Test with deref | |
42 | let _: u8 = *boxed_slice.get(1).unwrap(); | |
43 | } | |
44 | ||
45 | { | |
46 | // Test `get_mut().unwrap()` | |
47 | *boxed_slice.get_mut(0).unwrap() = 1; | |
48 | *some_slice.get_mut(0).unwrap() = 1; | |
49 | *some_vec.get_mut(0).unwrap() = 1; | |
50 | *some_vecdeque.get_mut(0).unwrap() = 1; | |
51 | // Check false positives | |
52 | *some_hashmap.get_mut(&1).unwrap() = 'b'; | |
53 | *some_btreemap.get_mut(&1).unwrap() = 'b'; | |
54 | *false_positive.get_mut(0).unwrap() = 1; | |
55 | } | |
56 | ||
57 | { | |
58 | // Test `get().unwrap().foo()` and `get_mut().unwrap().bar()` | |
59 | let _ = some_vec.get(0..1).unwrap().to_vec(); | |
60 | let _ = some_vec.get_mut(0..1).unwrap().to_vec(); | |
61 | } | |
62 | } |