Trait logos::Logos

source ·
pub trait Logos<'source>: Sized {
    type Extras;
    type Source: Source + ?Sized + 'source;

    const ERROR: Self;

    fn lex(lexer: &mut Lexer<'source, Self>);

    fn lexer(source: &'source Self::Source) -> Lexer<'source, Self> 
    where
        Self::Extras: Default
, { ... } fn lexer_with_extras(
        source: &'source Self::Source,
        extras: Self::Extras
    ) -> Lexer<'source, Self> { ... } }
Expand description

Trait implemented for an enum representing all tokens. You should never have to implement it manually, use the #[derive(Logos)] attribute on your enum.

Required Associated Types§

Associated type Extras for the particular lexer. This can be set using #[logos(extras = MyExtras)] and accessed inside callbacks.

Source type this token can be lexed from. This will default to str, unless one of the defined patterns explicitly uses non-unicode byte values or byte slices, in which case that implementation will use [u8].

Required Associated Constants§

Helper const of the variant marked as #[error].

Required Methods§

The heart of Logos. Called by the Lexer. The implementation for this function is generated by the logos-derive crate.

Provided Methods§

Create a new instance of a Lexer that will produce tokens implementing this Logos.

Create a new instance of a Lexer with the provided Extras that will produce tokens implementing this Logos.

Implementors§