]> git.proxmox.com Git - rustc.git/blame - src/tools/clippy/tests/ui/iter_kv_map.rs
New upstream version 1.74.1+dfsg1
[rustc.git] / src / tools / clippy / tests / ui / iter_kv_map.rs
CommitLineData
2b03887a 1#![warn(clippy::iter_kv_map)]
9c376795 2#![allow(unused_mut, clippy::redundant_clone, clippy::suspicious_map, clippy::map_identity)]
2b03887a
FG
3
4use std::collections::{BTreeMap, HashMap};
5
6fn main() {
7 let get_key = |(key, _val)| key;
9c376795
FG
8 fn ref_acceptor(v: &u32) -> u32 {
9 *v
10 }
2b03887a
FG
11
12 let map: HashMap<u32, u32> = HashMap::new();
13
14 let _ = map.iter().map(|(key, _)| key).collect::<Vec<_>>();
15 let _ = map.iter().map(|(_, value)| value).collect::<Vec<_>>();
16 let _ = map.iter().map(|(_, v)| v + 2).collect::<Vec<_>>();
17
18 let _ = map.clone().into_iter().map(|(key, _)| key).collect::<Vec<_>>();
19 let _ = map.clone().into_iter().map(|(key, _)| key + 2).collect::<Vec<_>>();
20
21 let _ = map.clone().into_iter().map(|(_, val)| val).collect::<Vec<_>>();
22 let _ = map.clone().into_iter().map(|(_, val)| val + 2).collect::<Vec<_>>();
23
24 let _ = map.clone().iter().map(|(_, val)| val).collect::<Vec<_>>();
25 let _ = map.iter().map(|(key, _)| key).filter(|x| *x % 2 == 0).count();
26
27 // Don't lint
28 let _ = map.iter().filter(|(_, val)| *val % 2 == 0).map(|(key, _)| key).count();
29 let _ = map.iter().map(get_key).collect::<Vec<_>>();
30
31 // Linting the following could be an improvement to the lint
32 // map.iter().filter_map(|(_, val)| (val % 2 == 0).then(val * 17)).count();
33
34 // Lint
35 let _ = map.iter().map(|(key, _value)| key * 9).count();
36 let _ = map.iter().map(|(_key, value)| value * 17).count();
37
9c376795
FG
38 // Preserve the ref in the fix.
39 let _ = map.clone().into_iter().map(|(_, ref val)| ref_acceptor(val)).count();
40
41 // Preserve the mut in the fix.
42 let _ = map
43 .clone()
44 .into_iter()
45 .map(|(_, mut val)| {
46 val += 2;
47 val
48 })
49 .count();
50
51 // Don't let a mut interfere.
52 let _ = map.clone().into_iter().map(|(_, mut val)| val).count();
53
2b03887a
FG
54 let map: BTreeMap<u32, u32> = BTreeMap::new();
55
56 let _ = map.iter().map(|(key, _)| key).collect::<Vec<_>>();
57 let _ = map.iter().map(|(_, value)| value).collect::<Vec<_>>();
58 let _ = map.iter().map(|(_, v)| v + 2).collect::<Vec<_>>();
59
60 let _ = map.clone().into_iter().map(|(key, _)| key).collect::<Vec<_>>();
61 let _ = map.clone().into_iter().map(|(key, _)| key + 2).collect::<Vec<_>>();
62
63 let _ = map.clone().into_iter().map(|(_, val)| val).collect::<Vec<_>>();
64 let _ = map.clone().into_iter().map(|(_, val)| val + 2).collect::<Vec<_>>();
65
66 let _ = map.clone().iter().map(|(_, val)| val).collect::<Vec<_>>();
67 let _ = map.iter().map(|(key, _)| key).filter(|x| *x % 2 == 0).count();
68
69 // Don't lint
70 let _ = map.iter().filter(|(_, val)| *val % 2 == 0).map(|(key, _)| key).count();
71 let _ = map.iter().map(get_key).collect::<Vec<_>>();
72
73 // Linting the following could be an improvement to the lint
74 // map.iter().filter_map(|(_, val)| (val % 2 == 0).then(val * 17)).count();
75
76 // Lint
77 let _ = map.iter().map(|(key, _value)| key * 9).count();
78 let _ = map.iter().map(|(_key, value)| value * 17).count();
9c376795
FG
79
80 // Preserve the ref in the fix.
81 let _ = map.clone().into_iter().map(|(_, ref val)| ref_acceptor(val)).count();
82
83 // Preserve the mut in the fix.
84 let _ = map
85 .clone()
86 .into_iter()
87 .map(|(_, mut val)| {
88 val += 2;
89 val
90 })
91 .count();
92
93 // Don't let a mut interfere.
94 let _ = map.clone().into_iter().map(|(_, mut val)| val).count();
2b03887a 95}