rust-code-analysis 0.0.25

Tool to compute and export code metrics
Documentation
// Code generated; DO NOT EDIT.

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)
    }
}

// Rust == u16
impl PartialEq<u16> for Rust {
    #[inline(always)]
    fn eq(&self, x: &u16) -> bool {
        *self == Rust::from(*x)
    }
}

// u16 == Rust
impl PartialEq<Rust> for u16 {
    #[inline(always)]
    fn eq(&self, x: &Rust) -> bool {
        *x == *self
    }
}