use super::super::{super::annotate::*, variant::*};
use {depiction::*, std::io};
pub struct AnnotatedDepictVariant<'own, AnnotatedT> {
pub inner: &'own Variant<AnnotatedT>,
pub mode: AnnotatedDepictionMode,
}
impl<'own, AnnotatedT> AnnotatedDepictVariant<'own, AnnotatedT> {
pub fn new(inner: &'own Variant<AnnotatedT>, mode: AnnotatedDepictionMode) -> Self {
Self { inner, mode }
}
}
impl<'own, AnnotatedT> Depict for AnnotatedDepictVariant<'own, AnnotatedT>
where
AnnotatedT: Annotated,
{
fn depict<WriteT>(&self, writer: &mut WriteT, context: &DepictionContext) -> io::Result<()>
where
WriteT: io::Write,
{
match self.inner {
Variant::List(list) => list.annotated_depict(self.mode).depict(writer, context),
Variant::Map(map) => map.annotated_depict(self.mode).depict(writer, context),
_ => AnnotatedDepiction::new(self.inner, self.mode).depict(writer, context),
}
}
}