use num_derive::FromPrimitive;
#[derive(Clone, Debug, PartialEq, Eq, FromPrimitive)]
pub enum Rust {
End = 0,
Identifier = 1,
SEMI = 2,
MacroRulesBANG = 3,
LPAREN = 4,
RPAREN = 5,
LBRACE = 6,
RBRACE = 7,
EQGT = 8,
LBRACK = 9,
RBRACK = 10,
COLON = 11,
DOLLAR = 12,
TokenRepetitionPatternToken1 = 13,
PLUS = 14,
STAR = 15,
QMARK = 16,
Block2 = 17,
Expr = 18,
Ident = 19,
Item = 20,
Lifetime2 = 21,
Literal = 22,
Meta = 23,
Pat = 24,
Path = 25,
Stmt = 26,
Tt = 27,
Ty = 28,
Vis = 29,
PrimitiveType = 30,
PrimitiveType2 = 31,
PrimitiveType3 = 32,
PrimitiveType4 = 33,
PrimitiveType5 = 34,
PrimitiveType6 = 35,
PrimitiveType7 = 36,
PrimitiveType8 = 37,
PrimitiveType9 = 38,
PrimitiveType10 = 39,
PrimitiveType11 = 40,
PrimitiveType12 = 41,
PrimitiveType13 = 42,
PrimitiveType14 = 43,
PrimitiveType15 = 44,
PrimitiveType16 = 45,
PrimitiveType17 = 46,
NonSpecialTokenToken1 = 47,
SQUOTE = 48,
As = 49,
Async = 50,
Await = 51,
Break = 52,
Const = 53,
Continue = 54,
Default = 55,
Enum = 56,
Fn = 57,
For = 58,
If = 59,
Impl = 60,
Let = 61,
Loop = 62,
Match = 63,
Mod = 64,
Pub = 65,
Return = 66,
Static = 67,
Struct = 68,
Trait = 69,
Type = 70,
Union = 71,
Unsafe = 72,
Use = 73,
Where = 74,
While = 75,
HASH = 76,
BANG = 77,
EQ = 78,
COMMA = 79,
Extern = 80,
Ref = 81,
DASHGT = 82,
LT = 83,
GT = 84,
Else = 85,
COLONCOLON = 86,
UNDERSCORE = 87,
AMP = 88,
DOTDOTDOT = 89,
In = 90,
LT2 = 91,
Dyn = 92,
MutableSpecifier = 93,
DOTDOT = 94,
DOTDOTEQ = 95,
DASH = 96,
AMPAMP = 97,
PIPEPIPE = 98,
PIPE = 99,
CARET = 100,
EQEQ = 101,
BANGEQ = 102,
LTEQ = 103,
GTEQ = 104,
LTLT = 105,
GTGT = 106,
SLASH = 107,
PERCENT = 108,
PLUSEQ = 109,
DASHEQ = 110,
STAREQ = 111,
SLASHEQ = 112,
PERCENTEQ = 113,
AMPEQ = 114,
PIPEEQ = 115,
CARETEQ = 116,
LTLTEQ = 117,
GTGTEQ = 118,
Yield = 119,
Move = 120,
DOT = 121,
AT = 122,
IntegerLiteral = 123,
DQUOTE = 124,
DQUOTE2 = 125,
CharLiteral = 126,
EscapeSequence = 127,
True = 128,
False = 129,
LineComment = 130,
Zelf = 131,
Super = 132,
Crate = 133,
Metavariable = 134,
StringContent = 135,
RawStringLiteral = 136,
FloatLiteral = 137,
BlockComment = 138,
SourceFile = 139,
Statement = 140,
EmptyStatement = 141,
ExpressionStatement = 142,
MacroDefinition = 143,
MacroRule = 144,
TokenPattern = 145,
TokenTreePattern = 146,
TokenBindingPattern = 147,
TokenRepetitionPattern = 148,
FragmentSpecifier = 149,
TokenTree = 150,
TokenRepetition = 151,
AttributeItem = 152,
InnerAttributeItem = 153,
Attribute = 154,
ModItem = 155,
ForeignModItem = 156,
DeclarationList = 157,
StructItem = 158,
UnionItem = 159,
EnumItem = 160,
EnumVariantList = 161,
EnumVariant = 162,
FieldDeclarationList = 163,
FieldDeclaration = 164,
OrderedFieldDeclarationList = 165,
ExternCrateDeclaration = 166,
ConstItem = 167,
StaticItem = 168,
TypeItem = 169,
FunctionItem = 170,
FunctionSignatureItem = 171,
FunctionModifiers = 172,
WhereClause = 173,
WherePredicate = 174,
ImplItem = 175,
TraitItem = 176,
AssociatedType = 177,
TraitBounds = 178,
HigherRankedTraitBound = 179,
RemovedTraitBound = 180,
TypeParameters = 181,
ConstParameter = 182,
ConstrainedTypeParameter = 183,
OptionalTypeParameter = 184,
LetDeclaration = 185,
UseDeclaration = 186,
UseClause = 187,
ScopedUseList = 188,
UseList = 189,
UseAsClause = 190,
UseWildcard = 191,
Parameters = 192,
SelfParameter = 193,
VariadicParameter = 194,
Parameter = 195,
ExternModifier = 196,
VisibilityModifier = 197,
Type2 = 198,
BracketedType = 199,
QualifiedType = 200,
Lifetime = 201,
ArrayType = 202,
ForLifetimes = 203,
FunctionType = 204,
TupleType = 205,
UnitType = 206,
GenericFunction = 207,
GenericType = 208,
GenericTypeWithTurbofish = 209,
BoundedType = 210,
TypeArguments = 211,
TypeBinding = 212,
ReferenceType = 213,
PointerType = 214,
EmptyType = 215,
AbstractType = 216,
DynamicType = 217,
ExpressionExceptRange = 218,
Expression = 219,
MacroInvocation = 220,
TokenTree2 = 221,
DelimTokens = 222,
NonDelimToken = 223,
ScopedIdentifier = 224,
ScopedTypeIdentifier = 225,
ScopedTypeIdentifier2 = 226,
RangeExpression = 227,
UnaryExpression = 228,
TryExpression = 229,
ReferenceExpression = 230,
BinaryExpression = 231,
AssignmentExpression = 232,
CompoundAssignmentExpr = 233,
TypeCastExpression = 234,
ReturnExpression = 235,
YieldExpression = 236,
CallExpression = 237,
Arguments = 238,
ArrayExpression = 239,
ParenthesizedExpression = 240,
TupleExpression = 241,
UnitExpression = 242,
StructExpression = 243,
FieldInitializerList = 244,
ShorthandFieldInitializer = 245,
FieldInitializer = 246,
BaseFieldInitializer = 247,
IfExpression = 248,
LetCondition = 249,
LetChain2 = 250,
Condition = 251,
ElseClause = 252,
MatchExpression = 253,
MatchBlock = 254,
MatchArm = 255,
MatchArm2 = 256,
MatchPattern = 257,
WhileExpression = 258,
LoopExpression = 259,
ForExpression = 260,
ConstBlock = 261,
ClosureExpression = 262,
ClosureParameters = 263,
LoopLabel = 264,
BreakExpression = 265,
ContinueExpression = 266,
IndexExpression = 267,
AwaitExpression = 268,
FieldExpression = 269,
UnsafeBlock = 270,
AsyncBlock = 271,
Block = 272,
Pattern = 273,
TuplePattern = 274,
SlicePattern = 275,
TupleStructPattern = 276,
StructPattern = 277,
FieldPattern = 278,
RemainingFieldPattern = 279,
MutPattern = 280,
RangePattern = 281,
RefPattern = 282,
CapturedPattern = 283,
ReferencePattern = 284,
OrPattern = 285,
Literal2 = 286,
LiteralPattern = 287,
NegativeLiteral = 288,
StringLiteral = 289,
BooleanLiteral = 290,
SourceFileRepeat1 = 291,
MacroDefinitionRepeat1 = 292,
TokenTreePatternRepeat1 = 293,
TokenTreeRepeat1 = 294,
DeclarationListRepeat1 = 295,
EnumVariantListRepeat1 = 296,
EnumVariantListRepeat2 = 297,
FieldDeclarationListRepeat1 = 298,
OrderedFieldDeclarationListRepeat1 = 299,
FunctionModifiersRepeat1 = 300,
WhereClauseRepeat1 = 301,
TraitBoundsRepeat1 = 302,
TypeParametersRepeat1 = 303,
UseListRepeat1 = 304,
ParametersRepeat1 = 305,
ForLifetimesRepeat1 = 306,
TupleTypeRepeat1 = 307,
TypeArgumentsRepeat1 = 308,
DelimTokenTreeRepeat1 = 309,
ArgumentsRepeat1 = 310,
ArrayExpressionRepeat1 = 311,
TupleExpressionRepeat1 = 312,
FieldInitializerListRepeat1 = 313,
MatchBlockRepeat1 = 314,
ClosureParametersRepeat1 = 315,
TuplePatternRepeat1 = 316,
StructPatternRepeat1 = 317,
StringLiteralRepeat1 = 318,
FieldIdentifier = 319,
LetChain = 320,
ShorthandFieldIdentifier = 321,
TypeIdentifier = 322,
Error = 323,
}
impl From<Rust> for &'static str {
#[inline(always)]
fn from(tok: Rust) -> Self {
match tok {
Rust::End => "end",
Rust::Identifier => "identifier",
Rust::SEMI => ";",
Rust::MacroRulesBANG => "macro_rules!",
Rust::LPAREN => "(",
Rust::RPAREN => ")",
Rust::LBRACE => "{",
Rust::RBRACE => "}",
Rust::EQGT => "=>",
Rust::LBRACK => "[",
Rust::RBRACK => "]",
Rust::COLON => ":",
Rust::DOLLAR => "$",
Rust::TokenRepetitionPatternToken1 => "token_repetition_pattern_token1",
Rust::PLUS => "+",
Rust::STAR => "*",
Rust::QMARK => "?",
Rust::Block2 => "block",
Rust::Expr => "expr",
Rust::Ident => "ident",
Rust::Item => "item",
Rust::Lifetime2 => "lifetime",
Rust::Literal => "literal",
Rust::Meta => "meta",
Rust::Pat => "pat",
Rust::Path => "path",
Rust::Stmt => "stmt",
Rust::Tt => "tt",
Rust::Ty => "ty",
Rust::Vis => "vis",
Rust::PrimitiveType => "primitive_type",
Rust::PrimitiveType2 => "primitive_type",
Rust::PrimitiveType3 => "primitive_type",
Rust::PrimitiveType4 => "primitive_type",
Rust::PrimitiveType5 => "primitive_type",
Rust::PrimitiveType6 => "primitive_type",
Rust::PrimitiveType7 => "primitive_type",
Rust::PrimitiveType8 => "primitive_type",
Rust::PrimitiveType9 => "primitive_type",
Rust::PrimitiveType10 => "primitive_type",
Rust::PrimitiveType11 => "primitive_type",
Rust::PrimitiveType12 => "primitive_type",
Rust::PrimitiveType13 => "primitive_type",
Rust::PrimitiveType14 => "primitive_type",
Rust::PrimitiveType15 => "primitive_type",
Rust::PrimitiveType16 => "primitive_type",
Rust::PrimitiveType17 => "primitive_type",
Rust::NonSpecialTokenToken1 => "_non_special_token_token1",
Rust::SQUOTE => "'",
Rust::As => "as",
Rust::Async => "async",
Rust::Await => "await",
Rust::Break => "break",
Rust::Const => "const",
Rust::Continue => "continue",
Rust::Default => "default",
Rust::Enum => "enum",
Rust::Fn => "fn",
Rust::For => "for",
Rust::If => "if",
Rust::Impl => "impl",
Rust::Let => "let",
Rust::Loop => "loop",
Rust::Match => "match",
Rust::Mod => "mod",
Rust::Pub => "pub",
Rust::Return => "return",
Rust::Static => "static",
Rust::Struct => "struct",
Rust::Trait => "trait",
Rust::Type => "type",
Rust::Union => "union",
Rust::Unsafe => "unsafe",
Rust::Use => "use",
Rust::Where => "where",
Rust::While => "while",
Rust::HASH => "#",
Rust::BANG => "!",
Rust::EQ => "=",
Rust::COMMA => ",",
Rust::Extern => "extern",
Rust::Ref => "ref",
Rust::DASHGT => "->",
Rust::LT => "<",
Rust::GT => ">",
Rust::Else => "else",
Rust::COLONCOLON => "::",
Rust::UNDERSCORE => "_",
Rust::AMP => "&",
Rust::DOTDOTDOT => "...",
Rust::In => "in",
Rust::LT2 => "<",
Rust::Dyn => "dyn",
Rust::MutableSpecifier => "mutable_specifier",
Rust::DOTDOT => "..",
Rust::DOTDOTEQ => "..=",
Rust::DASH => "-",
Rust::AMPAMP => "&&",
Rust::PIPEPIPE => "||",
Rust::PIPE => "|",
Rust::CARET => "^",
Rust::EQEQ => "==",
Rust::BANGEQ => "!=",
Rust::LTEQ => "<=",
Rust::GTEQ => ">=",
Rust::LTLT => "<<",
Rust::GTGT => ">>",
Rust::SLASH => "/",
Rust::PERCENT => "%",
Rust::PLUSEQ => "+=",
Rust::DASHEQ => "-=",
Rust::STAREQ => "*=",
Rust::SLASHEQ => "/=",
Rust::PERCENTEQ => "%=",
Rust::AMPEQ => "&=",
Rust::PIPEEQ => "|=",
Rust::CARETEQ => "^=",
Rust::LTLTEQ => "<<=",
Rust::GTGTEQ => ">>=",
Rust::Yield => "yield",
Rust::Move => "move",
Rust::DOT => ".",
Rust::AT => "@",
Rust::IntegerLiteral => "integer_literal",
Rust::DQUOTE => "\"",
Rust::DQUOTE2 => "\"",
Rust::CharLiteral => "char_literal",
Rust::EscapeSequence => "escape_sequence",
Rust::True => "true",
Rust::False => "false",
Rust::LineComment => "line_comment",
Rust::Zelf => "self",
Rust::Super => "super",
Rust::Crate => "crate",
Rust::Metavariable => "metavariable",
Rust::StringContent => "_string_content",
Rust::RawStringLiteral => "raw_string_literal",
Rust::FloatLiteral => "float_literal",
Rust::BlockComment => "block_comment",
Rust::SourceFile => "source_file",
Rust::Statement => "_statement",
Rust::EmptyStatement => "empty_statement",
Rust::ExpressionStatement => "expression_statement",
Rust::MacroDefinition => "macro_definition",
Rust::MacroRule => "macro_rule",
Rust::TokenPattern => "_token_pattern",
Rust::TokenTreePattern => "token_tree_pattern",
Rust::TokenBindingPattern => "token_binding_pattern",
Rust::TokenRepetitionPattern => "token_repetition_pattern",
Rust::FragmentSpecifier => "fragment_specifier",
Rust::TokenTree => "token_tree",
Rust::TokenRepetition => "token_repetition",
Rust::AttributeItem => "attribute_item",
Rust::InnerAttributeItem => "inner_attribute_item",
Rust::Attribute => "attribute",
Rust::ModItem => "mod_item",
Rust::ForeignModItem => "foreign_mod_item",
Rust::DeclarationList => "declaration_list",
Rust::StructItem => "struct_item",
Rust::UnionItem => "union_item",
Rust::EnumItem => "enum_item",
Rust::EnumVariantList => "enum_variant_list",
Rust::EnumVariant => "enum_variant",
Rust::FieldDeclarationList => "field_declaration_list",
Rust::FieldDeclaration => "field_declaration",
Rust::OrderedFieldDeclarationList => "ordered_field_declaration_list",
Rust::ExternCrateDeclaration => "extern_crate_declaration",
Rust::ConstItem => "const_item",
Rust::StaticItem => "static_item",
Rust::TypeItem => "type_item",
Rust::FunctionItem => "function_item",
Rust::FunctionSignatureItem => "function_signature_item",
Rust::FunctionModifiers => "function_modifiers",
Rust::WhereClause => "where_clause",
Rust::WherePredicate => "where_predicate",
Rust::ImplItem => "impl_item",
Rust::TraitItem => "trait_item",
Rust::AssociatedType => "associated_type",
Rust::TraitBounds => "trait_bounds",
Rust::HigherRankedTraitBound => "higher_ranked_trait_bound",
Rust::RemovedTraitBound => "removed_trait_bound",
Rust::TypeParameters => "type_parameters",
Rust::ConstParameter => "const_parameter",
Rust::ConstrainedTypeParameter => "constrained_type_parameter",
Rust::OptionalTypeParameter => "optional_type_parameter",
Rust::LetDeclaration => "let_declaration",
Rust::UseDeclaration => "use_declaration",
Rust::UseClause => "_use_clause",
Rust::ScopedUseList => "scoped_use_list",
Rust::UseList => "use_list",
Rust::UseAsClause => "use_as_clause",
Rust::UseWildcard => "use_wildcard",
Rust::Parameters => "parameters",
Rust::SelfParameter => "self_parameter",
Rust::VariadicParameter => "variadic_parameter",
Rust::Parameter => "parameter",
Rust::ExternModifier => "extern_modifier",
Rust::VisibilityModifier => "visibility_modifier",
Rust::Type2 => "_type",
Rust::BracketedType => "bracketed_type",
Rust::QualifiedType => "qualified_type",
Rust::Lifetime => "lifetime",
Rust::ArrayType => "array_type",
Rust::ForLifetimes => "for_lifetimes",
Rust::FunctionType => "function_type",
Rust::TupleType => "tuple_type",
Rust::UnitType => "unit_type",
Rust::GenericFunction => "generic_function",
Rust::GenericType => "generic_type",
Rust::GenericTypeWithTurbofish => "generic_type_with_turbofish",
Rust::BoundedType => "bounded_type",
Rust::TypeArguments => "type_arguments",
Rust::TypeBinding => "type_binding",
Rust::ReferenceType => "reference_type",
Rust::PointerType => "pointer_type",
Rust::EmptyType => "empty_type",
Rust::AbstractType => "abstract_type",
Rust::DynamicType => "dynamic_type",
Rust::ExpressionExceptRange => "_expression_except_range",
Rust::Expression => "_expression",
Rust::MacroInvocation => "macro_invocation",
Rust::TokenTree2 => "token_tree",
Rust::DelimTokens => "_delim_tokens",
Rust::NonDelimToken => "_non_delim_token",
Rust::ScopedIdentifier => "scoped_identifier",
Rust::ScopedTypeIdentifier => "scoped_type_identifier",
Rust::ScopedTypeIdentifier2 => "scoped_type_identifier",
Rust::RangeExpression => "range_expression",
Rust::UnaryExpression => "unary_expression",
Rust::TryExpression => "try_expression",
Rust::ReferenceExpression => "reference_expression",
Rust::BinaryExpression => "binary_expression",
Rust::AssignmentExpression => "assignment_expression",
Rust::CompoundAssignmentExpr => "compound_assignment_expr",
Rust::TypeCastExpression => "type_cast_expression",
Rust::ReturnExpression => "return_expression",
Rust::YieldExpression => "yield_expression",
Rust::CallExpression => "call_expression",
Rust::Arguments => "arguments",
Rust::ArrayExpression => "array_expression",
Rust::ParenthesizedExpression => "parenthesized_expression",
Rust::TupleExpression => "tuple_expression",
Rust::UnitExpression => "unit_expression",
Rust::StructExpression => "struct_expression",
Rust::FieldInitializerList => "field_initializer_list",
Rust::ShorthandFieldInitializer => "shorthand_field_initializer",
Rust::FieldInitializer => "field_initializer",
Rust::BaseFieldInitializer => "base_field_initializer",
Rust::IfExpression => "if_expression",
Rust::LetCondition => "let_condition",
Rust::LetChain2 => "_let_chain",
Rust::Condition => "_condition",
Rust::ElseClause => "else_clause",
Rust::MatchExpression => "match_expression",
Rust::MatchBlock => "match_block",
Rust::MatchArm => "match_arm",
Rust::MatchArm2 => "match_arm",
Rust::MatchPattern => "match_pattern",
Rust::WhileExpression => "while_expression",
Rust::LoopExpression => "loop_expression",
Rust::ForExpression => "for_expression",
Rust::ConstBlock => "const_block",
Rust::ClosureExpression => "closure_expression",
Rust::ClosureParameters => "closure_parameters",
Rust::LoopLabel => "loop_label",
Rust::BreakExpression => "break_expression",
Rust::ContinueExpression => "continue_expression",
Rust::IndexExpression => "index_expression",
Rust::AwaitExpression => "await_expression",
Rust::FieldExpression => "field_expression",
Rust::UnsafeBlock => "unsafe_block",
Rust::AsyncBlock => "async_block",
Rust::Block => "block",
Rust::Pattern => "_pattern",
Rust::TuplePattern => "tuple_pattern",
Rust::SlicePattern => "slice_pattern",
Rust::TupleStructPattern => "tuple_struct_pattern",
Rust::StructPattern => "struct_pattern",
Rust::FieldPattern => "field_pattern",
Rust::RemainingFieldPattern => "remaining_field_pattern",
Rust::MutPattern => "mut_pattern",
Rust::RangePattern => "range_pattern",
Rust::RefPattern => "ref_pattern",
Rust::CapturedPattern => "captured_pattern",
Rust::ReferencePattern => "reference_pattern",
Rust::OrPattern => "or_pattern",
Rust::Literal2 => "_literal",
Rust::LiteralPattern => "_literal_pattern",
Rust::NegativeLiteral => "negative_literal",
Rust::StringLiteral => "string_literal",
Rust::BooleanLiteral => "boolean_literal",
Rust::SourceFileRepeat1 => "source_file_repeat1",
Rust::MacroDefinitionRepeat1 => "macro_definition_repeat1",
Rust::TokenTreePatternRepeat1 => "token_tree_pattern_repeat1",
Rust::TokenTreeRepeat1 => "token_tree_repeat1",
Rust::DeclarationListRepeat1 => "declaration_list_repeat1",
Rust::EnumVariantListRepeat1 => "enum_variant_list_repeat1",
Rust::EnumVariantListRepeat2 => "enum_variant_list_repeat2",
Rust::FieldDeclarationListRepeat1 => "field_declaration_list_repeat1",
Rust::OrderedFieldDeclarationListRepeat1 => "ordered_field_declaration_list_repeat1",
Rust::FunctionModifiersRepeat1 => "function_modifiers_repeat1",
Rust::WhereClauseRepeat1 => "where_clause_repeat1",
Rust::TraitBoundsRepeat1 => "trait_bounds_repeat1",
Rust::TypeParametersRepeat1 => "type_parameters_repeat1",
Rust::UseListRepeat1 => "use_list_repeat1",
Rust::ParametersRepeat1 => "parameters_repeat1",
Rust::ForLifetimesRepeat1 => "for_lifetimes_repeat1",
Rust::TupleTypeRepeat1 => "tuple_type_repeat1",
Rust::TypeArgumentsRepeat1 => "type_arguments_repeat1",
Rust::DelimTokenTreeRepeat1 => "delim_token_tree_repeat1",
Rust::ArgumentsRepeat1 => "arguments_repeat1",
Rust::ArrayExpressionRepeat1 => "array_expression_repeat1",
Rust::TupleExpressionRepeat1 => "tuple_expression_repeat1",
Rust::FieldInitializerListRepeat1 => "field_initializer_list_repeat1",
Rust::MatchBlockRepeat1 => "match_block_repeat1",
Rust::ClosureParametersRepeat1 => "closure_parameters_repeat1",
Rust::TuplePatternRepeat1 => "tuple_pattern_repeat1",
Rust::StructPatternRepeat1 => "struct_pattern_repeat1",
Rust::StringLiteralRepeat1 => "string_literal_repeat1",
Rust::FieldIdentifier => "field_identifier",
Rust::LetChain => "let_chain",
Rust::ShorthandFieldIdentifier => "shorthand_field_identifier",
Rust::TypeIdentifier => "type_identifier",
Rust::Error => "ERROR",
}
}
}
impl From<u16> for Rust {
#[inline(always)]
fn from(x: u16) -> Self {
num::FromPrimitive::from_u16(x).unwrap_or(Self::Error)
}
}
impl PartialEq<u16> for Rust {
#[inline(always)]
fn eq(&self, x: &u16) -> bool {
*self == Rust::from(*x)
}
}
impl PartialEq<Rust> for u16 {
#[inline(always)]
fn eq(&self, x: &Rust) -> bool {
*x == *self
}
}