use std::fmt::Display;
#[derive(Clone, Copy, Debug, Default)]
pub enum Detail {
#[default]
Full,
AllStubs,
ReferenceStubs,
}
impl Display for Detail {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::Full => write!(f, "full"),
Self::AllStubs => write!(f, "allstubs"),
Self::ReferenceStubs => write!(f, "referencestubs"),
}
}
}
#[derive(Clone, Copy, Debug, Default)]
pub enum References {
#[default]
None,
Parents,
ParentsAndSiblings,
Children,
Descendants,
All,
}
impl Display for References {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::None => write!(f, "none"),
Self::Parents => write!(f, "parents"),
Self::ParentsAndSiblings => write!(f, "parentsandsiblings"),
Self::Children => write!(f, "children"),
Self::Descendants => write!(f, "descendants"),
Self::All => write!(f, "all"),
}
}
}
#[derive(Clone, Debug)]
pub enum MetadataParameter {
Detail { detail: Detail, },
References { references: References, },
}
impl Display for MetadataParameter {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::Detail { detail } => write!(f, "detail={}", detail.to_string()),
Self::References { references } => write!(f, "references={}", references.to_string()),
}
}
}