1use crate::{prelude::fmt, root::Namespace};
4
5pub trait Package: Namespace {}
6
7pub trait LibraryPackage: Package {
8 fn is_standard(&self) -> bool {
9 false
10 }
11}
12
13impl fmt::Debug for dyn Package {
14 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
15 fmt::Display::fmt(self, f)
16 }
17}
18
19impl fmt::Display for dyn Package {
20 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
21 match (self.short_name(), self.name()) {
22 (Some(short_name), Some(name)) => write!(f, "package <'{}'> '{}'", short_name, name),
23 (Some(short_name), None) => write!(f, "package <'{}'>", short_name),
24 (None, Some(name)) => write!(f, "package '{}'", name),
25 (None, None) => write!(f, "package"),
26 }
27 }
28}