use crate::{prelude::fmt, root::Namespace};
pub trait Package: Namespace {}
pub trait LibraryPackage: Package {
    fn is_standard(&self) -> bool {
        false
    }
}
impl fmt::Debug for dyn Package {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        fmt::Display::fmt(self, f)
    }
}
impl fmt::Display for dyn Package {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        match (self.short_name(), self.name()) {
            (Some(short_name), Some(name)) => write!(f, "package <'{}'> '{}'", short_name, name),
            (Some(short_name), None) => write!(f, "package <'{}'>", short_name),
            (None, Some(name)) => write!(f, "package '{}'", name),
            (None, None) => write!(f, "package"),
        }
    }
}