#![allow(clippy::needless_pass_by_value, clippy::collapsible_if)] #![warn(clippy::map_entry)] use std::collections::HashMap; use std::hash::Hash; macro_rules! m { ($e:expr) => {{ $e }}; } macro_rules! insert { ($map:expr, $key:expr, $val:expr) => { $map.insert($key, $val) }; } mod issue13306 { use std::collections::HashMap; struct Env { enclosing: Option>, values: HashMap, } impl Env { fn assign(&mut self, name: String, value: usize) -> bool { if !self.values.contains_key(&name) { //~^ map_entry self.values.insert(name, value); true } else if let Some(enclosing) = &mut self.enclosing { enclosing.assign(name, value) } else { false } } } } fn issue9925(mut hm: HashMap) { let key = "hello".to_string(); if hm.contains_key(&key) { //~^ map_entry let bval = hm.get_mut(&key).unwrap(); *bval = false; } else { hm.insert(key, true); } } mod issue9470 { use std::collections::HashMap; use std::sync::Mutex; struct Interner(i32); impl Interner { const fn new() -> Self { Interner(0) } fn resolve(&self, name: String) -> Option { todo!() } } static INTERNER: Mutex = Mutex::new(Interner::new()); struct VM { stack: Vec, globals: HashMap, } impl VM { fn stack_top(&self) -> &i32 { self.stack.last().unwrap() } fn resolve(&mut self, name: String, value: i32) -> Result<(), String> { if self.globals.contains_key(&name) { //~^ map_entry self.globals.insert(name, value); } else { let interner = INTERNER.lock().unwrap(); return Err(interner.resolve(name).unwrap().to_owned()); } Ok(()) } } } fn main() {}