ftml/parsing/rule/impls/block/blocks/module/
output.rs1use crate::tree::{Element, Elements, Module};
22
23#[derive(Debug)]
24pub enum ModuleParseOutput<'t> {
25 Module(Module<'t>),
26 Element(Element<'t>),
27 None,
28}
29
30impl<'t> From<Module<'t>> for ModuleParseOutput<'t> {
32 #[inline]
33 fn from(module: Module<'t>) -> ModuleParseOutput<'t> {
34 ModuleParseOutput::Module(module)
35 }
36}
37
38impl<'t> From<Element<'t>> for ModuleParseOutput<'t> {
39 #[inline]
40 fn from(element: Element<'t>) -> ModuleParseOutput<'t> {
41 ModuleParseOutput::Element(element)
42 }
43}
44
45impl<'t> From<Option<()>> for ModuleParseOutput<'t> {
46 #[inline]
47 fn from(_: Option<()>) -> ModuleParseOutput<'t> {
48 ModuleParseOutput::None
49 }
50}
51
52impl<'t> From<ModuleParseOutput<'t>> for Elements<'t> {
54 fn from(output: ModuleParseOutput<'t>) -> Elements<'t> {
55 match output {
56 ModuleParseOutput::Module(module) => {
57 Elements::Single(Element::Module(module))
58 }
59 ModuleParseOutput::Element(element) => Elements::Single(element),
60 ModuleParseOutput::None => Elements::None,
61 }
62 }
63}