]> git.lizzy.rs Git - rust.git/blob - tests/ui/entry.rs
Auto merge of #4478 - tsurai:master, r=flip1995
[rust.git] / tests / ui / entry.rs
1 #![allow(unused, clippy::needless_pass_by_value)]
2 #![warn(clippy::map_entry)]
3
4 use std::collections::{BTreeMap, HashMap};
5 use std::hash::Hash;
6
7 fn foo() {}
8
9 fn insert_if_absent0<K: Eq + Hash, V>(m: &mut HashMap<K, V>, k: K, v: V) {
10     if !m.contains_key(&k) {
11         m.insert(k, v);
12     }
13 }
14
15 fn insert_if_absent1<K: Eq + Hash, V>(m: &mut HashMap<K, V>, k: K, v: V) {
16     if !m.contains_key(&k) {
17         foo();
18         m.insert(k, v);
19     }
20 }
21
22 fn insert_if_absent2<K: Eq + Hash, V>(m: &mut HashMap<K, V>, k: K, v: V) {
23     if !m.contains_key(&k) {
24         m.insert(k, v)
25     } else {
26         None
27     };
28 }
29
30 fn insert_if_present2<K: Eq + Hash, V>(m: &mut HashMap<K, V>, k: K, v: V) {
31     if m.contains_key(&k) {
32         None
33     } else {
34         m.insert(k, v)
35     };
36 }
37
38 fn insert_if_absent3<K: Eq + Hash, V>(m: &mut HashMap<K, V>, k: K, v: V) {
39     if !m.contains_key(&k) {
40         foo();
41         m.insert(k, v)
42     } else {
43         None
44     };
45 }
46
47 fn insert_if_present3<K: Eq + Hash, V>(m: &mut HashMap<K, V>, k: K, v: V) {
48     if m.contains_key(&k) {
49         None
50     } else {
51         foo();
52         m.insert(k, v)
53     };
54 }
55
56 fn insert_in_btreemap<K: Ord, V>(m: &mut BTreeMap<K, V>, k: K, v: V) {
57     if !m.contains_key(&k) {
58         foo();
59         m.insert(k, v)
60     } else {
61         None
62     };
63 }
64
65 fn insert_other_if_absent<K: Eq + Hash, V>(m: &mut HashMap<K, V>, k: K, o: K, v: V) {
66     if !m.contains_key(&k) {
67         m.insert(o, v);
68     }
69 }
70
71 // should not trigger, because the one uses different HashMap from another one
72 fn insert_from_different_map<K: Eq + Hash, V>(m: HashMap<K, V>, n: &mut HashMap<K, V>, k: K, v: V) {
73     if !m.contains_key(&k) {
74         n.insert(k, v);
75     }
76 }
77
78 // should not trigger, because the one uses different HashMap from another one
79 fn insert_from_different_map2<K: Eq + Hash, V>(m: &mut HashMap<K, V>, n: &mut HashMap<K, V>, k: K, v: V) {
80     if !m.contains_key(&k) {
81         n.insert(k, v);
82     }
83 }
84
85 fn main() {}