pub enum LineContainer {
Token(LineToken),
Container {
children: Vec<LineContainer>,
},
}Expand description
The primary tree structure for the lexer output.
This is a recursive enum representing the complete hierarchical structure of line tokens. Every node in the tree is either a line token or a container of child nodes.
The tree is built by processing Indent/Dedent markers:
- Token variant: A single line token (e.g., SubjectLine, ParagraphLine, ListLine)
- Container variant: A grouped set of child nodes at a deeper indentation level
This structure allows the parser to match patterns by checking token types while maintaining the complete source structure (source tokens, nesting).
Note: Container does NOT store an aggregate source_span. The AST construction facade will compute bounding boxes by recursively unrolling children to their source tokens.
Variants§
Token(LineToken)
A single line token
Container
A container of child nodes (represents indented content or grouped lines at same level)
Fields
§
children: Vec<LineContainer>Implementations§
Trait Implementations§
Source§impl Clone for LineContainer
impl Clone for LineContainer
Source§fn clone(&self) -> LineContainer
fn clone(&self) -> LineContainer
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for LineContainer
impl Debug for LineContainer
Source§impl<'de> Deserialize<'de> for LineContainer
impl<'de> Deserialize<'de> for LineContainer
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl PartialEq for LineContainer
impl PartialEq for LineContainer
Source§impl Serialize for LineContainer
impl Serialize for LineContainer
impl StructuralPartialEq for LineContainer
Auto Trait Implementations§
impl Freeze for LineContainer
impl RefUnwindSafe for LineContainer
impl Send for LineContainer
impl Sync for LineContainer
impl Unpin for LineContainer
impl UnwindSafe for LineContainer
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more