compris/normal/depict/
variant.rs

1use super::super::{super::annotate::*, variant::*};
2
3use {depiction::*, std::io};
4
5//
6// AnnotatedDepictVariant
7//
8
9/// [Depict] wrapper for a [Variant] with [Annotations].
10pub struct AnnotatedDepictVariant<'own, AnnotatedT> {
11    /// Inner.
12    pub inner: &'own Variant<AnnotatedT>,
13
14    /// Mode.
15    pub mode: AnnotatedDepictionMode,
16}
17
18impl<'own, AnnotatedT> AnnotatedDepictVariant<'own, AnnotatedT> {
19    /// Constructor.
20    pub fn new(inner: &'own Variant<AnnotatedT>, mode: AnnotatedDepictionMode) -> Self {
21        Self { inner, mode }
22    }
23}
24
25impl<'own, AnnotatedT> Depict for AnnotatedDepictVariant<'own, AnnotatedT>
26where
27    AnnotatedT: Annotated,
28{
29    fn depict<WriteT>(&self, writer: &mut WriteT, context: &DepictionContext) -> io::Result<()>
30    where
31        WriteT: io::Write,
32    {
33        match self.inner {
34            Variant::List(list) => list.annotated_depict(self.mode).depict(writer, context),
35            Variant::Map(map) => map.annotated_depict(self.mode).depict(writer, context),
36            _ => AnnotatedDepiction::new(self.inner, self.mode).depict(writer, context),
37        }
38    }
39}