use crate::tree::{Element, Elements, Module};
#[derive(Debug)]
pub enum ModuleParseOutput<'t> {
Module(Module<'t>),
Element(Element<'t>),
None,
}
impl<'t> From<Module<'t>> for ModuleParseOutput<'t> {
#[inline]
fn from(module: Module<'t>) -> ModuleParseOutput<'t> {
ModuleParseOutput::Module(module)
}
}
impl<'t> From<Element<'t>> for ModuleParseOutput<'t> {
#[inline]
fn from(element: Element<'t>) -> ModuleParseOutput<'t> {
ModuleParseOutput::Element(element)
}
}
impl<'t> From<Option<()>> for ModuleParseOutput<'t> {
#[inline]
fn from(_: Option<()>) -> ModuleParseOutput<'t> {
ModuleParseOutput::None
}
}
impl<'t> From<ModuleParseOutput<'t>> for Elements<'t> {
fn from(output: ModuleParseOutput<'t>) -> Elements<'t> {
match output {
ModuleParseOutput::Module(module) => {
Elements::Single(Element::Module(module))
}
ModuleParseOutput::Element(element) => Elements::Single(element),
ModuleParseOutput::None => Elements::None,
}
}
}