1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
use crate::elements::accent::ExpressionAccent; use crate::elements::group::Group; use crate::elements::literal::Literal; use crate::elements::special::Special; use crate::utils::Boxed; pub mod accent; pub mod group; pub mod literal; pub mod special; #[derive(Debug, Clone, PartialOrd, PartialEq)] pub enum Element { Literal(Literal), Special(Special), Group(Group), Accent(ExpressionAccent), } impl Boxed for Element {} impl Element { pub fn to_non_enclosed(&self) -> Self { if let Element::Group(g) = self { if let Some(ne) = g.to_non_enclosed() { Element::Group(ne) } else { Element::Group(g.clone()) } } else { self.clone() } } }