use std::rc::Rc; pub struct FqnContext { parts: Vec>, } impl FqnContext { pub fn new() -> Self { Self { parts: vec![] } } pub fn push(&mut self, part: Rc) { self.parts.push(part); } pub fn pop(&mut self) { self.parts.pop(); } pub fn resolve(&self, name: &str) -> Vec> { let mut result = self.parts.clone(); result.push(name.into()); result } }