Refactoring

This commit is contained in:
elvis
2025-06-16 14:46:04 +02:00
parent 0975d593f8
commit b94afa3f52
8 changed files with 359 additions and 263 deletions

View File

@ -0,0 +1,25 @@
// translate and keeps track of strings
use std::collections::HashMap;
pub type IdType = u32;
#[derive(Clone, Debug)]
pub struct Translator {
strings: HashMap<String, IdType>,
last_id: IdType
}
impl Translator {
pub fn new() -> Self {
Translator { strings: HashMap::new(), last_id: 0 }
}
}
impl Translator {
pub fn convert<S: AsRef<str>>(&mut self, s: S) -> IdType {
*(self.strings.entry(s.as_ref().to_string()).or_insert({self.last_id += 1; self.last_id}))
}
}