maybe working with dynamic dispatch.
This commit is contained in:
parent
a08fab1a8d
commit
a55b7c42fd
@ -77,41 +77,41 @@ pub struct ContextTree<'r, T> {
|
||||
head: Option<Node<'r, T>>,
|
||||
}
|
||||
|
||||
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<F: ContextElement>(&'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> {
|
||||
|
Loading…
Reference in New Issue
Block a user