diff --git a/compiler/module/src/symbol.rs b/compiler/module/src/symbol.rs index c4961522c8..ef3e57ad73 100644 --- a/compiler/module/src/symbol.rs +++ b/compiler/module/src/symbol.rs @@ -562,15 +562,17 @@ impl IdentIds { } pub fn get_or_insert(&mut self, name: &Ident) -> IdentId { - match self.by_ident.get(name) { - Some(id) => *id, - None => { + use std::collections::hash_map::Entry; + + match self.by_ident.entry(name.clone()) { + Entry::Occupied(occupied) => *occupied.get(), + Entry::Vacant(vacant) => { let by_id = &mut self.by_id; let ident_id = IdentId(by_id.len() as u32); by_id.push(name.clone()); - self.by_ident.insert(name.clone(), ident_id); + vacant.insert(ident_id); ident_id }