use crate::{boolean_algebra, truthtable}; use super::graphvizable::Graphvizable; pub enum Pair<'a> { BAPair(pest::iterators::Pair<'a, boolean_algebra::parser::BARule>), TTPair(pest::iterators::Pair<'a, truthtable::parser::TTRule>), } impl <'a>Graphvizable for Pair<'a> { fn graphviz_diagram(&self) -> String { match &self { Pair::BAPair(pair) => pair.graphviz_diagram(), Pair::TTPair(pair) => pair.graphviz_diagram() } } fn print_graphviz_diagram(&self) { match &self { Pair::BAPair(pair) => pair.print_graphviz_diagram(), Pair::TTPair(pair) => pair.print_graphviz_diagram() } } } pub trait Parser { fn parse(input: &mut String) -> Pair; }