feat: convet a named debruijn to a name

This commit is contained in:
rvcas
2022-06-15 20:12:12 -04:00
parent 7693da4bbf
commit 59a8f6477b
3 changed files with 114 additions and 8 deletions

View File

@@ -0,0 +1,32 @@
use std::collections::HashMap;
use crate::ast::Unique;
use super::Level;
pub struct BiMap {
left: HashMap<Unique, Level>,
right: HashMap<Level, Unique>,
}
impl BiMap {
pub(super) fn new() -> Self {
BiMap {
right: HashMap::new(),
left: HashMap::new(),
}
}
pub(super) fn insert(&mut self, unique: Unique, level: Level) {
self.left.insert(unique, level);
self.right.insert(level, unique);
}
pub(super) fn get(&self, unique: &Unique) -> Option<&Level> {
self.left.get(unique)
}
pub(super) fn get_right(&self, level: &Level) -> Option<&Unique> {
self.right.get(level)
}
}