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 {
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
}