ra_ap_syntax 0.0.64

Comment and whitespace preserving parser for the Rust language
Documentation
SOURCE_FILE@0..195
  TYPE_ALIAS@0..37
    TYPE_KW@0..4 "type"
    WHITESPACE@4..5 " "
    NAME@5..8
      IDENT@5..8 "Foo"
    GENERIC_PARAM_LIST@8..12
      L_ANGLE@8..9 "<"
      LIFETIME_PARAM@9..11
        LIFETIME@9..11
          LIFETIME_IDENT@9..11 "'a"
      R_ANGLE@11..12 ">"
    WHITESPACE@12..13 " "
    EQ@13..14 "="
    WHITESPACE@14..15 " "
    REF_TYPE@15..36
      AMP@15..16 "&"
      LIFETIME@16..18
        LIFETIME_IDENT@16..18 "'a"
      WHITESPACE@18..19 " "
      PAREN_TYPE@19..36
        L_PAREN@19..20 "("
        DYN_TRAIT_TYPE@20..35
          DYN_KW@20..23 "dyn"
          WHITESPACE@23..24 " "
          TYPE_BOUND_LIST@24..35
            TYPE_BOUND@24..28
              PATH_TYPE@24..28
                PATH@24..28
                  PATH_SEGMENT@24..28
                    NAME_REF@24..28
                      IDENT@24..28 "Send"
            WHITESPACE@28..29 " "
            PLUS@29..30 "+"
            WHITESPACE@30..31 " "
            TYPE_BOUND@31..35
              PATH_TYPE@31..35
                PATH@31..35
                  PATH_SEGMENT@31..35
                    NAME_REF@31..35
                      IDENT@31..35 "Sync"
        R_PAREN@35..36 ")"
    SEMICOLON@36..37 ";"
  WHITESPACE@37..38 "\n"
  TYPE_ALIAS@38..74
    TYPE_KW@38..42 "type"
    WHITESPACE@42..43 " "
    NAME@43..46
      IDENT@43..46 "Foo"
    WHITESPACE@46..47 " "
    EQ@47..48 "="
    WHITESPACE@48..49 " "
    PTR_TYPE@49..73
      STAR@49..50 "*"
      CONST_KW@50..55 "const"
      WHITESPACE@55..56 " "
      PAREN_TYPE@56..73
        L_PAREN@56..57 "("
        DYN_TRAIT_TYPE@57..72
          DYN_KW@57..60 "dyn"
          WHITESPACE@60..61 " "
          TYPE_BOUND_LIST@61..72
            TYPE_BOUND@61..65
              PATH_TYPE@61..65
                PATH@61..65
                  PATH_SEGMENT@61..65
                    NAME_REF@61..65
                      IDENT@61..65 "Send"
            WHITESPACE@65..66 " "
            PLUS@66..67 "+"
            WHITESPACE@67..68 " "
            TYPE_BOUND@68..72
              PATH_TYPE@68..72
                PATH@68..72
                  PATH_SEGMENT@68..72
                    NAME_REF@68..72
                      IDENT@68..72 "Sync"
        R_PAREN@72..73 ")"
    SEMICOLON@73..74 ";"
  WHITESPACE@74..75 "\n"
  TYPE_ALIAS@75..115
    TYPE_KW@75..79 "type"
    WHITESPACE@79..80 " "
    NAME@80..83
      IDENT@80..83 "Foo"
    WHITESPACE@83..84 " "
    EQ@84..85 "="
    WHITESPACE@85..86 " "
    FN_PTR_TYPE@86..114
      FN_KW@86..88 "fn"
      PARAM_LIST@88..90
        L_PAREN@88..89 "("
        R_PAREN@89..90 ")"
      WHITESPACE@90..91 " "
      RET_TYPE@91..114
        THIN_ARROW@91..93 "->"
        WHITESPACE@93..94 " "
        PAREN_TYPE@94..114
          L_PAREN@94..95 "("
          DYN_TRAIT_TYPE@95..113
            DYN_KW@95..98 "dyn"
            WHITESPACE@98..99 " "
            TYPE_BOUND_LIST@99..113
              TYPE_BOUND@99..103
                PATH_TYPE@99..103
                  PATH@99..103
                    PATH_SEGMENT@99..103
                      NAME_REF@99..103
                        IDENT@99..103 "Send"
              WHITESPACE@103..104 " "
              PLUS@104..105 "+"
              WHITESPACE@105..106 " "
              TYPE_BOUND@106..113
                LIFETIME@106..113
                  LIFETIME_IDENT@106..113 "'static"
          R_PAREN@113..114 ")"
    SEMICOLON@114..115 ";"
  WHITESPACE@115..116 "\n"
  FN@116..194
    FN_KW@116..118 "fn"
    WHITESPACE@118..119 " "
    NAME@119..123
      IDENT@119..123 "main"
    PARAM_LIST@123..125
      L_PAREN@123..124 "("
      R_PAREN@124..125 ")"
    WHITESPACE@125..126 " "
    BLOCK_EXPR@126..194
      L_CURLY@126..127 "{"
      WHITESPACE@127..132 "\n    "
      LET_STMT@132..192
        LET_KW@132..135 "let"
        WHITESPACE@135..136 " "
        IDENT_PAT@136..137
          NAME@136..137
            IDENT@136..137 "b"
        WHITESPACE@137..138 " "
        EQ@138..139 "="
        WHITESPACE@139..140 " "
        CAST_EXPR@140..191
          PAREN_EXPR@140..144
            L_PAREN@140..141 "("
            REF_EXPR@141..143
              AMP@141..142 "&"
              PATH_EXPR@142..143
                PATH@142..143
                  PATH_SEGMENT@142..143
                    NAME_REF@142..143
                      IDENT@142..143 "a"
            R_PAREN@143..144 ")"
          WHITESPACE@144..145 " "
          AS_KW@145..147 "as"
          WHITESPACE@147..148 " "
          REF_TYPE@148..191
            AMP@148..149 "&"
            PAREN_TYPE@149..191
              L_PAREN@149..150 "("
              DYN_TRAIT_TYPE@150..190
                DYN_KW@150..153 "dyn"
                WHITESPACE@153..154 " "
                TYPE_BOUND_LIST@154..190
                  TYPE_BOUND@154..182
                    PATH_TYPE@154..182
                      PATH@154..182
                        PATH_SEGMENT@154..182
                          NAME_REF@154..157
                            IDENT@154..157 "Add"
                          GENERIC_ARG_LIST@157..182
                            L_ANGLE@157..158 "<"
                            TYPE_ARG@158..163
                              PATH_TYPE@158..163
                                PATH@158..163
                                  PATH_SEGMENT@158..163
                                    NAME_REF@158..163
                                      IDENT@158..163 "Other"
                            COMMA@163..164 ","
                            WHITESPACE@164..165 " "
                            ASSOC_TYPE_ARG@165..181
                              NAME_REF@165..171
                                IDENT@165..171 "Output"
                              WHITESPACE@171..172 " "
                              EQ@172..173 "="
                              WHITESPACE@173..174 " "
                              PATH_TYPE@174..181
                                PATH@174..181
                                  PATH_SEGMENT@174..181
                                    NAME_REF@174..181
                                      IDENT@174..181 "Addable"
                            R_ANGLE@181..182 ">"
                  WHITESPACE@182..183 " "
                  PLUS@183..184 "+"
                  WHITESPACE@184..185 " "
                  TYPE_BOUND@185..190
                    PATH_TYPE@185..190
                      PATH@185..190
                        PATH_SEGMENT@185..190
                          NAME_REF@185..190
                            IDENT@185..190 "Other"
              R_PAREN@190..191 ")"
        SEMICOLON@191..192 ";"
      WHITESPACE@192..193 "\n"
      R_CURLY@193..194 "}"
  WHITESPACE@194..195 "\n"