Introduce a registry into the conversion to intermediate format.
This commit is contained in:
24
src/intermediate/registry.rs
Normal file
24
src/intermediate/registry.rs
Normal file
@@ -0,0 +1,24 @@
|
||||
use std::collections::HashMap;
|
||||
|
||||
type IdCounter = u16;
|
||||
|
||||
pub(crate) struct Registry<'p> {
|
||||
id_counter: IdCounter,
|
||||
targets: HashMap<&'p str, String>,
|
||||
}
|
||||
|
||||
impl<'p> Registry<'p> {
|
||||
pub(crate) fn new() -> Registry<'p> {
|
||||
Registry {
|
||||
id_counter: 0,
|
||||
targets: HashMap::new(),
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn get_target<'b>(&'b mut self, body: &'p str) -> &'b String {
|
||||
self.targets.entry(body).or_insert_with(|| {
|
||||
self.id_counter += 1;
|
||||
format!("target_{}", self.id_counter)
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user