pub enum TokenKind {
Show 42 variants
LineComment {
doc_style: Option<DocStyle>,
},
BlockComment {
doc_style: Option<DocStyle>,
terminated: bool,
},
Whitespace,
Ident,
InvalidIdent,
RawIdent,
UnknownPrefix,
UnknownPrefixLifetime,
RawLifetime,
InvalidPrefix,
GuardedStrPrefix,
Literal {
kind: LiteralKind,
suffix_start: u32,
},
Lifetime {
starts_with_number: bool,
},
Semi,
Comma,
Dot,
OpenParen,
CloseParen,
OpenBrace,
CloseBrace,
OpenBracket,
CloseBracket,
At,
Pound,
Tilde,
Question,
Colon,
Dollar,
Eq,
Bang,
Lt,
Gt,
Minus,
And,
Or,
Plus,
Star,
Slash,
Caret,
Percent,
Unknown,
Eof,
}
Expand description
Enum representing common lexeme types.
Variants§
LineComment
“// comment”
BlockComment
/* block comment */
Block comments can be recursive, so a sequence like /* /* */
will not be considered terminated and will result in a parsing error.
Whitespace
Any whitespace character sequence.
Ident
“ident” or “continue”
At this step, keywords are also considered identifiers.
InvalidIdent
Like the above, but containing invalid unicode codepoints.
RawIdent
“r#ident”
UnknownPrefix
An unknown prefix, like foo#
, foo'
, foo"
.
Note that only the
prefix (foo
) is included in the token, not the separator (which is
lexed as its own distinct token). In Rust 2021 and later, reserved
prefixes are reported as errors; in earlier editions, they result in a
(allowed by default) lint, and are treated as regular identifier
tokens.
UnknownPrefixLifetime
An unknown prefix in a lifetime, like 'foo#
.
Note that like above, only the '
and prefix are included in the token
and not the separator.
RawLifetime
'r#lt
, which in edition < 2021 is split into several tokens: 'r # lt
.
InvalidPrefix
Similar to the above, but always an error on every edition. This is used for emoji identifier recovery, as those are not meant to be ever accepted.
GuardedStrPrefix
Guarded string literal prefix: #"
or ##
.
Used for reserving “guarded strings” (RFC 3598) in edition 2024. Split into the component tokens on older editions.
Literal
Examples: 12u8
, 1.0e-40
, b"123"
. Note that _
is an invalid
suffix, but may be present here on string and float literals. Users of
this type will need to check for and reject that case.
See LiteralKind for more details.
Lifetime
“’a”
Semi
“;”
Comma
“,”
Dot
“.”
OpenParen
“(”
CloseParen
“)”
OpenBrace
“{”
CloseBrace
“}”
OpenBracket
“[”
CloseBracket
“]”
At
“@”
Pound
“#”
Tilde
“~”
Question
“?”
Colon
“:”
Dollar
“$”
Eq
“=”
Bang
“!”
Lt
“<”
Gt
“>”
Minus
“-”
And
“&”
Or
“|”
Plus
“+”
Star
“*”
Slash
“/”
Caret
“^”
Percent
“%”
Unknown
Unknown token, not expected by the lexer, e.g. “№”
Eof
End of input.