From c6f75e1736ee0a8703c0f02686defc152e337769 Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Thu, 15 Dec 2022 21:30:53 -0500 Subject: [PATCH] Don't increment Rc counters when checking exit matchers. --- src/parser/nom_context.rs | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/src/parser/nom_context.rs b/src/parser/nom_context.rs index e0ad437..9822079 100644 --- a/src/parser/nom_context.rs +++ b/src/parser/nom_context.rs @@ -47,12 +47,8 @@ impl<'r, 's> ContextTree<'r, 's> { &'r self, i: &'s str, ) -> IResult<&'s str, &'s str, VerboseError<&'s str>> { - // TODO: Can I do this without incrementing reference counters? Perhaps via implementing an iterator over the list? - let mut current_node = self.tree.clone(); - while !current_node.is_empty() { - let context_element = current_node - .get_data() - .expect("While looop proves its Some()"); + for current_node in self.iter() { + let context_element = current_node.get_data(); match context_element { ContextElement::ExitMatcherNode(exit_matcher) => { match exit_matcher.exit_matcher { @@ -80,10 +76,7 @@ impl<'r, 's> ContextTree<'r, 's> { ContextElement::PreviousElementNode(_) => {} ContextElement::StartOfParagraph => {} }; - - current_node = current_node.without_front(); } - // TODO: Make this a custom error not(take(0usize))(i)?; unreachable!()