From 7976e017fd8f09074df04bbeea04ac14371a0f85 Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Thu, 24 Nov 2022 15:08:43 -0500 Subject: [PATCH] Store the node in the list. --- src/parser/nom_context.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/parser/nom_context.rs b/src/parser/nom_context.rs index 60ba9def..f8152e45 100644 --- a/src/parser/nom_context.rs +++ b/src/parser/nom_context.rs @@ -10,13 +10,13 @@ use nom::Parser; type Link<'r, T> = Option<&'r Node<'r, T>>; type Matcher = dyn for<'s> Fn(&'s str) -> IResult<&'s str, &'s str, VerboseError<&'s str>>; -pub struct Node<'r, T> { +struct Node<'r, T> { elem: T, next: Link<'r, T>, } pub struct List<'r, T> { - head: Link<'r, T>, + head: Option>, } impl<'r, T> List<'r, T> { @@ -24,13 +24,15 @@ impl<'r, T> List<'r, T> { List { head: None } } - pub fn with_additional_node(&self, element: T) -> Node<'r, T> { + pub fn with_additional_node(&'r self, element: T) -> List<'r, T> { let new_node = Node { elem: element, - next: self.head, + next: self.head.as_ref(), }; - new_node + List { + head: Some(new_node), + } } }