use Entry in symbol.rs

This commit is contained in:
Folkert 2021-10-29 21:25:11 +02:00
parent 30e7f7b335
commit e10cd07143

View file

@ -562,15 +562,17 @@ impl IdentIds {
} }
pub fn get_or_insert(&mut self, name: &Ident) -> IdentId { pub fn get_or_insert(&mut self, name: &Ident) -> IdentId {
match self.by_ident.get(name) { use std::collections::hash_map::Entry;
Some(id) => *id,
None => { match self.by_ident.entry(name.clone()) {
Entry::Occupied(occupied) => *occupied.get(),
Entry::Vacant(vacant) => {
let by_id = &mut self.by_id; let by_id = &mut self.by_id;
let ident_id = IdentId(by_id.len() as u32); let ident_id = IdentId(by_id.len() as u32);
by_id.push(name.clone()); by_id.push(name.clone());
self.by_ident.insert(name.clone(), ident_id); vacant.insert(ident_id);
ident_id ident_id
} }