named_item/
unique_name_enforcer.rs

1crate::ix!();
2
3/// Trait for ensuring unique names across a collection or context.
4pub struct UniqueNameEnforcer {
5    names: HashSet<String>,
6}
7
8impl UniqueNameEnforcer {
9    pub fn new() -> Self {
10        Self {
11            names: HashSet::new(),
12        }
13    }
14
15    /// Adds a name to the unique set. Returns an error if the name already exists.
16    pub fn add_unique_name(&mut self, name: &str) -> Result<(), NameError> {
17        if self.names.contains(name) {
18            Err(NameError::DuplicateName(name.to_string()))
19        } else {
20            self.names.insert(name.to_string());
21            Ok(())
22        }
23    }
24}