#[derive(Debug)] pub enum Token<'a> { TextElement(TextElement<'a>), Paragraph(Paragraph<'a>), } impl<'a> Into> for TextElement<'a> { fn into(self) -> Token<'a> { Token::TextElement(self) } } impl<'a> Into> for Paragraph<'a> { fn into(self) -> Token<'a> { Token::Paragraph(self) } } #[derive(Debug)] pub enum TextElement<'a> { Span(Span<'a>), Space(Space<'a>), LineBreak(LineBreak<'a>), Symbol(Symbol<'a>), Bold(Bold<'a>), Link(Link<'a>), } #[derive(Debug)] pub struct Span<'a> { pub contents: &'a str, } #[derive(Debug)] pub struct Space<'a> { pub contents: &'a str, } #[derive(Debug)] pub struct LineBreak<'a> { pub contents: &'a str, } #[derive(Debug)] pub struct Symbol<'a> { pub contents: &'a str, } #[derive(Debug)] pub struct BlankLine<'a> { pub contents: &'a str, } #[derive(Debug)] pub struct Sequence<'a> { pub contents: &'a str, } #[derive(Debug)] pub struct Bold<'a> { pub contents: &'a str, } #[derive(Debug)] pub struct Link<'a> { pub contents: &'a str, } #[derive(Debug)] pub struct Paragraph<'a> { pub contents: Vec>, pub paragraph_end: &'a str, }