Skip to main content

textlane_core/models/
tree.rs

1use crate::models::{hast, mdast, nlcst};
2
3/// The tree a pipeline stage takes or returns.
4#[derive(Debug, PartialEq)]
5pub enum Tree<'a> {
6    Mdast(mdast::Node<'a>),
7    Hast(hast::Node<'a>),
8    Nlcst(nlcst::Node<'a>),
9}
10
11/// Which kind of tree a stage takes or returns, checked when a processor freezes.
12#[derive(Clone, Copy, Debug, PartialEq, Eq)]
13pub enum TreeKind {
14    Mdast,
15    Hast,
16    Nlcst,
17}
18
19impl Tree<'_> {
20    pub fn kind(&self) -> TreeKind {
21        match self {
22            Tree::Mdast(_) => TreeKind::Mdast,
23            Tree::Hast(_) => TreeKind::Hast,
24            Tree::Nlcst(_) => TreeKind::Nlcst,
25        }
26    }
27}