| #![allow(unused, clippy::needless_pass_by_value, clippy::collapsible_if)] | |
| #![warn(clippy::map_entry)] | |
| use std::collections::{BTreeMap, HashMap}; | |
| use std::hash::Hash; | |
| macro_rules! m { | |
| ($e:expr) => {{ $e }}; | |
| } | |
| fn foo() {} | |
| fn insert_if_absent0<K: Eq + Hash + Copy, V: Copy>(m: &mut HashMap<K, V>, k: K, v: V, v2: V) { | |
| match m.entry(k) { | |
| std::collections::hash_map::Entry::Vacant(e) => { | |
| //~^ map_entry | |
| e.insert(v); | |
| } | |
| std::collections::hash_map::Entry::Occupied(mut e) => { | |
| e.insert(v2); | |
| } | |
| } | |
| match m.entry(k) { | |
| std::collections::hash_map::Entry::Occupied(mut e) => { | |
| //~^ map_entry | |
| e.insert(v); | |
| } | |
| std::collections::hash_map::Entry::Vacant(e) => { | |
| e.insert(v2); | |
| } | |
| } | |
| if let std::collections::hash_map::Entry::Vacant(e) = m.entry(k) { | |
| //~^ map_entry | |
| e.insert(v); | |
| } else { | |
| foo(); | |
| } | |
| if let std::collections::hash_map::Entry::Occupied(mut e) = m.entry(k) { | |
| e.insert(v); | |
| } else { | |
| //~^ map_entry | |
| foo(); | |
| } | |
| match m.entry(k) { | |
| std::collections::hash_map::Entry::Vacant(e) => { | |
| //~^ map_entry | |
| e.insert(v); | |
| } | |
| std::collections::hash_map::Entry::Occupied(mut e) => { | |
| e.insert(v2); | |
| } | |
| } | |
| match m.entry(k) { | |
| std::collections::hash_map::Entry::Occupied(mut e) => { | |
| //~^ map_entry | |
| if true { Some(e.insert(v)) } else { Some(e.insert(v2)) } | |
| } | |
| std::collections::hash_map::Entry::Vacant(e) => { | |
| e.insert(v); | |
| None | |
| } | |
| }; | |
| if let std::collections::hash_map::Entry::Occupied(mut e) = m.entry(k) { | |
| //~^ map_entry | |
| foo(); | |
| Some(e.insert(v)) | |
| } else { | |
| None | |
| }; | |
| } | |
| fn main() {} |