diff --git a/src/parser/new_context.rs b/src/parser/new_context.rs index 87372c3c..882310c8 100644 --- a/src/parser/new_context.rs +++ b/src/parser/new_context.rs @@ -77,41 +77,41 @@ pub struct ContextTree<'r, T> { head: Option>, } -impl<'r, T> ContextTree<'r, T> { +impl<'r, T> ContextTree<'r, T> +where + T: ContextElement, +{ pub fn new() -> Self { ContextTree { head: None } } - // pub fn with_additional_node<'s, F: ContextElement<'s>>( - // &'r self, - // element: F, - // ) -> ContextTree<'r, F> { - // let new_node = { - // let parent: Option<&dyn NodeType<'_>> = match &self.head { - // Some(node) => Some(node), - // None => None, - // }; - // Node { - // data: element, - // parent, - // } - // }; + pub fn with_additional_node(&'r self, element: F) -> ContextTree<'r, F> { + let new_node = { + let parent: Option<&dyn NodeType<'_>> = match &self.head { + Some(node) => Some(node), + None => None, + }; + Node { + data: element, + parent, + } + }; - // ContextTree { - // head: Some(new_node), - // } - // } + ContextTree { + head: Some(new_node), + } + } } fn test_context() { let foo = "foo"; - // let context = ContextTree::new(); + let context: ContextTree<'_, PreviousElementNode> = ContextTree::new(); let child1_context = PreviousElementNode { dummy: foo }; - // let child1 = context.with_additional_node(child1_context); + let child1 = context.with_additional_node(child1_context); let child2_context = FailMatcherNode { fail_matcher: ChainBehavior::AndParent(Some(&recognize_bold_end)), }; - // let child2 = child1.with_additional_node(child2_context); + let child2 = child1.with_additional_node(child2_context); } fn recognize_bold_end(input: &str) -> Res<&str, &str> {