bc-xid 0.4.0

Unique, stable, extensible, and verifiable identifiers
Documentation
use anyhow::{Result, bail};

pub trait HasName {
    fn name(&self) -> &str;

    fn set_name(&mut self, name: impl Into<String>);

    fn add_name(&mut self, name: &str) -> Result<()> {
        if !self.name().is_empty() {
            bail!("Duplicate name");
        }
        if name.is_empty() {
            bail!("Name is empty");
        }
        self.set_name(name);

        Ok(())
    }
}