feat: convet a named debruijn to a name
This commit is contained in:
32
crates/uplc/src/debruijn/bimap.rs
Normal file
32
crates/uplc/src/debruijn/bimap.rs
Normal 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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user