pub trait NonStreamingLexer<'input, LexerTypesT: LexerTypes>: Lexer<LexerTypesT>
where usize: AsPrimitive<LexerTypesT::StorageT>,
{ // Required methods fn span_str(&self, span: Span) -> &'input str; fn span_lines_str(&self, span: Span) -> &'input str; fn line_col(&self, span: Span) -> ((usize, usize), (usize, usize)); }
Expand description

A NonStreamingLexer is one that takes input in one go, and is then able to hand out substrings to that input and calculate line and column numbers from a Span.

Required Methods§

source

fn span_str(&self, span: Span) -> &'input str

Return the user input associated with a Span.

The Span must be well formed:

  • The start/end byte indexes must be valid UTF-8 character indexes.
  • The end byte index must not exceed the input’s length.

If these requirements are not respected this function may panic or return unexpected portions of the input.

source

fn span_lines_str(&self, span: Span) -> &'input str

Return the lines containing the input at span (including all the text on the lines that span starts and ends on).

The Span must be well formed:

  • The start/end byte indexes must be valid UTF-8 character indexes.
  • The end byte index must not exceed the input’s length.

If these requirements are not respected this function may panic or return unexpected portions of the input.

source

fn line_col(&self, span: Span) -> ((usize, usize), (usize, usize))

Return ((start line, start column), (end line, end column)) for span. Note that column characters (not bytes) are returned.

The Span must be well formed:

  • The start/end byte indexes must be valid UTF-8 character indexes.
  • The end byte index must not exceed the input’s length.

If these requirements are not respected this function may panic or return unexpected portions of the input.

Implementors§