use super::greater_element::DynamicBlock; use super::greater_element::FootnoteDefinition; use super::greater_element::GreaterBlock; use super::greater_element::PlainList; use super::greater_element::PropertyDrawer; use super::greater_element::Table; use super::lesser_element::Comment; use super::lesser_element::LesserBlock; use super::lesser_element::Paragraph; use super::source::Source; use super::Drawer; #[derive(Debug)] pub enum Element<'s> { Paragraph(Paragraph<'s>), PlainList(PlainList<'s>), GreaterBlock(GreaterBlock<'s>), DynamicBlock(DynamicBlock<'s>), FootnoteDefinition(FootnoteDefinition<'s>), Comment(Comment<'s>), Drawer(Drawer<'s>), PropertyDrawer(PropertyDrawer<'s>), Table(Table<'s>), LesserBlock(LesserBlock<'s>), } impl<'s> Source<'s> for Element<'s> { fn get_source(&'s self) -> &'s str { match self { Element::Paragraph(obj) => obj.source, Element::PlainList(obj) => obj.source, Element::GreaterBlock(obj) => obj.source, Element::DynamicBlock(obj) => obj.source, Element::FootnoteDefinition(obj) => obj.source, Element::Comment(obj) => obj.source, Element::Drawer(obj) => obj.source, Element::PropertyDrawer(obj) => obj.source, Element::Table(obj) => obj.source, Element::LesserBlock(obj) => obj.source, } } }