- kind: keyword
  variant: Abstract
  doc: "The `abstract` keyword."
  keyword: "abstract"
- kind: keyword
  variant: AlignOf
  doc: "The `alignof` keyword."
  keyword: "alignof"
- kind: punct
  variant: Amp
  doc: "`&`."
  punct: "&"
- kind: punct
  variant: AmpAmp
  doc: "`&&`."
  punct: "&&"
- kind: punct
  variant: AmpEq
  doc: "`&=`."
  punct: "&="
- kind: punct
  variant: Arrow
  doc: "`->`."
  punct: "->"
- kind: keyword
  variant: As
  doc: "The `as` keyword."
  keyword: "as"
- kind: keyword
  variant: Async
  doc: "The `async` keyword."
  keyword: "async"
- kind: punct
  variant: At
  doc: "`@`."
  punct: "@"
- kind: keyword
  variant: Await
  doc: "The `await` keyword."
  keyword: "await"
- kind: punct
  variant: Bang
  doc: "`!`."
  punct: "!"
- kind: punct
  variant: BangEq
  doc: "`!=`."
  punct: "!="
- kind: keyword
  variant: Become
  doc: "The `become` keyword."
  keyword: "become"
- kind: keyword
  variant: Break
  doc: "The `break` keyword."
  keyword: "break"
- kind: punct
  variant: Caret
  doc: "`^`."
  punct: "^"
- kind: punct
  variant: CaretEq
  doc: "`^=`."
  punct: "^="
- kind: punct
  variant: Colon
  doc: "`:`."
  punct: ":"
- kind: punct
  variant: ColonColon
  doc: "`::`."
  punct: "::"
- kind: punct
  variant: Comma
  doc: "`,`."
  punct: ","
- kind: keyword
  variant: Const
  doc: "The `const` keyword."
  keyword: "const"
- kind: keyword
  variant: Continue
  doc: "The `continue` keyword."
  keyword: "continue"
- kind: keyword
  variant: Crate
  doc: "The `crate` keyword."
  keyword: "crate"
- kind: punct
  variant: Dash
  doc: "`-`."
  punct: "-"
- kind: punct
  variant: DashEq
  doc: "`-=`."
  punct: "-="
- kind: keyword
  variant: Default
  doc: "The `default` keyword."
  keyword: "default"
- kind: punct
  variant: Div
  doc: "`/`."
  punct: "/"
- kind: keyword
  variant: Do
  doc: "The `do` keyword."
  keyword: "do"
- kind: punct
  variant: Dollar
  doc: "`$`."
  punct: "$"
- kind: punct
  variant: Dot
  doc: "`.`."
  punct: "."
- kind: punct
  variant: DotDot
  doc: "`..`."
  punct: ".."
- kind: punct
  variant: DotDotEq
  doc: "`..=`."
  punct: "..="
- kind: keyword
  variant: Else
  doc: "The `else` keyword."
  keyword: "else"
- kind: keyword
  variant: Enum
  doc: "The `enum` keyword."
  keyword: "enum"
- kind: punct
  variant: Eq
  doc: "`=`."
  punct: "="
- kind: punct
  variant: EqEq
  doc: "`==`."
  punct: "=="
- kind: keyword
  variant: Extern
  doc: "The `extern` keyword."
  keyword: "extern"
- kind: keyword
  variant: "False"
  doc: "The `false` keyword."
  keyword: "false"
- kind: keyword
  variant: Final
  doc: "The `final` keyword."
  keyword: "final"
- kind: keyword
  variant: Fn
  doc: "The `fn` keyword."
  keyword: "fn"
- kind: keyword
  variant: For
  doc: "The `for` keyword."
  keyword: "for"
- kind: punct
  variant: Gt
  doc: "`>`."
  punct: ">"
- kind: punct
  variant: GtEq
  doc: "`>=`."
  punct: ">="
- kind: punct
  variant: GtGt
  doc: "`>>`."
  punct: ">>"
- kind: punct
  variant: GtGtEq
  doc: "`>>=`."
  punct: ">>="
- kind: keyword
  variant: If
  doc: "The `if` keyword."
  keyword: "if"
- kind: keyword
  variant: Impl
  doc: "The `impl` keyword."
  keyword: "impl"
- kind: keyword
  variant: In
  doc: "The `in` keyword."
  keyword: "in"
- kind: keyword
  variant: Is
  doc: "The `is` keyword."
  keyword: "is"
- kind: keyword
  variant: Let
  doc: "The `let` keyword."
  keyword: "let"
- kind: keyword
  variant: Loop
  doc: "The `loop` keyword."
  keyword: "loop"
- kind: punct
  variant: Lt
  doc: "`<`."
  punct: "<"
- kind: punct
  variant: LtEq
  doc: "`<=`."
  punct: "<="
- kind: punct
  variant: LtLt
  doc: "`<<`."
  punct: "<<"
- kind: punct
  variant: LtLtEq
  doc: "`<<=`."
  punct: "<<="
- kind: keyword
  variant: Macro
  doc: "The `macro` keyword."
  keyword: "macro"
- kind: keyword
  variant: Match
  doc: "The `match` keyword."
  keyword: "match"
- kind: keyword
  variant: Mod
  doc: "The `mod` keyword."
  keyword: "mod"
- kind: keyword
  variant: Move
  doc: "The `move` keyword."
  keyword: "move"
- kind: keyword
  variant: Mut
  doc: "The `mut` keyword."
  keyword: "mut"
- kind: keyword
  variant: Not
  doc: "The `not` keyword."
  keyword: "not"
- kind: keyword
  variant: OffsetOf
  doc: "The `offsetof` keyword."
  keyword: "offsetof"
- kind: keyword
  variant: Override
  doc: "The `override` keyword."
  keyword: "override"
- kind: punct
  variant: Perc
  doc: "`%`."
  punct: "%"
- kind: punct
  variant: PercEq
  doc: "`%=`."
  punct: "%="
- kind: punct
  variant: Pipe
  doc: "`|`."
  punct: "|"
- kind: punct
  variant: PipeEq
  doc: "|=`."
  punct: "|="
- kind: punct
  variant: PipePipe
  doc: "`||`."
  punct: "||"
- kind: punct
  variant: Plus
  doc: "`+`."
  punct: "+"
- kind: punct
  variant: PlusEq
  doc: "`+=`."
  punct: "+="
- kind: punct
  variant: Pound
  doc: "`#`."
  punct: "#"
- kind: keyword
  variant: Priv
  doc: "The `priv` keyword."
  keyword: "priv"
- kind: keyword
  variant: Proc
  doc: "The `proc` keyword."
  keyword: "proc"
- kind: keyword
  variant: Pub
  doc: "The `pub` keyword."
  keyword: "pub"
- kind: keyword
  variant: Pure
  doc: "The `pure` keyword."
  keyword: "pure"
- kind: punct
  variant: QuestionMark
  doc: "`?`."
  punct: "?"
- kind: keyword
  variant: Ref
  doc: "The `ref` keyword."
  keyword: "ref"
- kind: keyword
  variant: Return
  doc: "The `return` keyword."
  keyword: "return"
- kind: punct
  variant: Rocket
  doc: "`=>`."
  punct: "=>"
- kind: keyword
  variant: Select
  doc: "The `select` keyword."
  keyword: "select"
- kind: keyword
  variant: SelfType
  doc: "The `Self` keyword."
  keyword: "Self"
- kind: keyword
  variant: SelfValue
  doc: "The `self` keyword."
  keyword: "self"
- kind: punct
  variant: SemiColon
  doc: "`;`."
  punct: ";"
- kind: keyword
  variant: SizeOf
  doc: "The `sizeof` keyword."
  keyword: "sizeof"
- kind: punct
  variant: SlashEq
  doc: "`/=`."
  punct: "/="
- kind: punct
  variant: Star
  doc: "`*`."
  punct: "*"
- kind: punct
  variant: StarEq
  doc: "`*=`."
  punct: "*="
- kind: keyword
  variant: Static
  doc: "The `static` keyword."
  keyword: "static"
- kind: keyword
  variant: Struct
  doc: "The `struct` keyword."
  keyword: "struct"
- kind: keyword
  variant: Super
  doc: "The `super` keyword."
  keyword: "super"
- kind: punct
  variant: Tilde
  doc: "`~`."
  punct: "~"
- kind: keyword
  variant: "True"
  doc: "The `true` keyword."
  keyword: "true"
- kind: keyword
  variant: TypeOf
  doc: "The `typeof` keyword."
  keyword: "typeof"
- kind: punct
  variant: Underscore
  doc: "`_`."
  punct: "_"
- kind: keyword
  variant: Unsafe
  doc: "The `unsafe` keyword."
  keyword: "unsafe"
- kind: keyword
  variant: Use
  doc: "The `use` keyword."
  keyword: "use"
- kind: keyword
  variant: Virtual
  doc: "The `virtual` keyword."
  keyword: "virtual"
- kind: keyword
  variant: While
  doc: "The `while` keyword."
  keyword: "while"
- kind: keyword
  variant: Yield
  doc: "The `yield` keyword."
  keyword: "yield"
- kind: syntax
  variant: Whitespace
  doc: whitespace.
# after this point comes high-level tokens used in grammar
- {kind: "syntax", variant: "Root", doc: "a syntax root"}
- {kind: "syntax", variant: "Local", doc: "a variable declaration"}
- {kind: "syntax", variant: "Item", doc: "an item declaration"}
- {kind: "syntax", variant: "ItemEnum", doc: "an enum declaration"}
- {kind: "syntax", variant: "ItemStruct", doc: "a struct declaration"}
- {kind: "syntax", variant: "ItemConst", doc: "a constant item"}
- {kind: "syntax", variant: "ItemFn", doc: "a function declaration"}
- {kind: "syntax", variant: "ItemImpl", doc: "an impl"}
- {kind: "syntax", variant: "ItemMod", doc: "a module declaration"}
- {kind: "syntax", variant: "ItemFileMod", doc: "a file module declaration"}
- {kind: "syntax", variant: "ItemUse", doc: "a use declaration"}
- {kind: "syntax", variant: "ItemUsePath", doc: "a nested use path"}
- {kind: "syntax", variant: "ItemUseGroup", doc: "a nested use group"}
- {kind: "syntax", variant: "Variant", doc: "a variant"}
- {kind: "syntax", variant: "Field", doc: "a field declaration"}
- {kind: "syntax", variant: "EmptyBody", doc: "an empty type body"}
- {kind: "syntax", variant: "StructBody", doc: "a struct body"}
- {kind: "syntax", variant: "TupleBody", doc: "a tuple body"}
- {kind: "syntax", variant: "FnArgs", doc: "a collection of function arguments"}
- {kind: "syntax", variant: "Block", doc: "a block"}
- {kind: "syntax", variant: "BlockBody", doc: "the body of a block"}
- {kind: "syntax", variant: "Expr", doc: "an expression"}
- {kind: "syntax", variant: "ExprChain", doc: "a chain of expressions"}
- {kind: "syntax", variant: "ExprTuple", doc: "a tuple expression"}
- {kind: "syntax", variant: "ExprArray", doc: "an array expression"}
- {kind: "syntax", variant: "ExprUnary", doc: "a unary expression"}
- {kind: "syntax", variant: "ExprBinary", doc: "a binary expression"}
- {kind: "syntax", variant: "ExprGroup", doc: "a group expression"}
- {kind: "syntax", variant: "ExprEmptyGroup", doc: "an empty group expression"}
- {kind: "syntax", variant: "ExprTry", doc: "a try expression"}
- {kind: "syntax", variant: "ExprIndex", doc: "an indexing expression"}
- {kind: "syntax", variant: "ExprCall", doc: "a call expression"}
- {kind: "syntax", variant: "ExprMacroCall", doc: "a macro call expression"}
- {kind: "syntax", variant: "ExprObject", doc: "an anonymous object expression"}
- {kind: "syntax", variant: "ExprMatch", doc: "a match expression"}
- {kind: "syntax", variant: "ExprMatchArm", doc: "a match arm"}
- {kind: "syntax", variant: "ExprSelect", doc: "a select expression"}
- {kind: "syntax", variant: "ExprSelectArm", doc: "a select arm"}
- {kind: "syntax", variant: "ExprAwait", doc: "an `.await` expression"}
- {kind: "syntax", variant: "ExprField", doc: "a field expression"}
- {kind: "syntax", variant: "ExprOperator", doc: "the operator in an expression"}
- {kind: "syntax", variant: "ExprIf", doc: "an `if` expression"}
- {kind: "syntax", variant: "ExprElse", doc: "the `else` part of an if-expression"}
- {kind: "syntax", variant: "ExprElseIf", doc: "the `else if` part of an if-expression"}
- {kind: "syntax", variant: "ExprWhile", doc: "a `while` expression"}
- {kind: "syntax", variant: "ExprLoop", doc: "a `loop` expression"}
- {kind: "syntax", variant: "ExprBreak", doc: "a `break` expression"}
- {kind: "syntax", variant: "ExprContinue", doc: "a `break` expression"}
- {kind: "syntax", variant: "ExprReturn", doc: "a `return` expression"}
- {kind: "syntax", variant: "ExprYield", doc: "a `yield` expression"}
- {kind: "syntax", variant: "ExprFor", doc: "a `for` expression"}
- {kind: "syntax", variant: "ExprRange", doc: "a `<start>..<end>` expression"}
- {kind: "syntax", variant: "ExprRangeInclusive", doc: "a `<start>..=<end>` expression"}
- {kind: "syntax", variant: "ExprRangeTo", doc: "a `..<end>` expression"}
- {kind: "syntax", variant: "ExprRangeToInclusive", doc: "a `..=<end>` expression"}
- {kind: "syntax", variant: "ExprRangeFrom", doc: "a `<start>..` expression"}
- {kind: "syntax", variant: "ExprRangeFull", doc: "a `..` expression"}
- {kind: "syntax", variant: "ExprAssign", doc: "an assign expression"}
- {kind: "syntax", variant: "Lit", doc: "a literal value"}
- {kind: "syntax", variant: "ExprClosure", doc: "a closure expression"}
- {kind: "syntax", variant: "Pat", doc: "a pattern"}
- {kind: "syntax", variant: "PatArray", doc: "an array pattern"}
- {kind: "syntax", variant: "PatTuple", doc: "a tuple pattern"}
- {kind: "syntax", variant: "PatObject", doc: "an object pattern"}
- {kind: "syntax", variant: "PatIgnore", doc: "an ignore pattern"}
- {kind: "syntax", variant: "Path", doc: "a path"}
- {kind: "syntax", variant: "PathGenerics", doc: "the generics of a path"}
- {kind: "syntax", variant: "Condition", doc: "the `let` condition of a loop"}
- {kind: "syntax", variant: "ClosureArguments", doc: "closure arguments"}
- {kind: "syntax", variant: "AnonymousObjectKey", doc: "an `#{` anonymous object key"}
- {kind: "syntax", variant: "Attribute", doc: "an attribute"}
- {kind: "syntax", variant: "InnerAttribute", doc: "an inner attribute"}
- {kind: "syntax", variant: "Modifiers", doc: "modifiers"}
- {kind: "syntax", variant: "ModifierSuper", doc: "the `(super)` modifier"}
- {kind: "syntax", variant: "ModifierSelf", doc: "the `(self)` modifier"}
- {kind: "syntax", variant: "ModifierCrate", doc: "the `(crate)` modifier"}
- {kind: "syntax", variant: "ModifierIn", doc: "the `(in <path>)` modifier"}
- {kind: "syntax", variant: "TokenStream", doc: "a raw token stream"}
- {kind: "syntax", variant: "TemplateString", doc: "a raw token stream"}
