SOURCE_FILE@0..519 FN@0..37 FN_KW@0..2 "fn" WHITESPACE@2..3 " " NAME@3..5 IDENT@3..5 "g1" PARAM_LIST@5..34 L_PAREN@5..6 "(" ATTR@6..14 POUND@6..7 "#" L_BRACK@7..8 "[" PATH@8..13 PATH_SEGMENT@8..13 NAME_REF@8..13 IDENT@8..13 "attr1" R_BRACK@13..14 "]" WHITESPACE@14..15 " " ATTR@15..23 POUND@15..16 "#" L_BRACK@16..17 "[" PATH@17..22 PATH_SEGMENT@17..22 NAME_REF@17..22 IDENT@17..22 "attr2" R_BRACK@22..23 "]" WHITESPACE@23..24 " " PARAM@24..33 IDENT_PAT@24..27 NAME@24..27 IDENT@24..27 "pat" COLON@27..28 ":" WHITESPACE@28..29 " " PATH_TYPE@29..33 PATH@29..33 PATH_SEGMENT@29..33 NAME_REF@29..33 IDENT@29..33 "Type" R_PAREN@33..34 ")" WHITESPACE@34..35 " " BLOCK_EXPR@35..37 L_CURLY@35..36 "{" R_CURLY@36..37 "}" WHITESPACE@37..38 "\n" FN@38..62 FN_KW@38..40 "fn" WHITESPACE@40..41 " " NAME@41..43 IDENT@41..43 "g2" PARAM_LIST@43..59 L_PAREN@43..44 "(" ATTR@44..52 POUND@44..45 "#" L_BRACK@45..46 "[" PATH@46..51 PATH_SEGMENT@46..51 NAME_REF@46..51 IDENT@46..51 "attr1" R_BRACK@51..52 "]" WHITESPACE@52..53 " " PARAM@53..58 IDENT_PAT@53..54 NAME@53..54 IDENT@53..54 "x" COLON@54..55 ":" WHITESPACE@55..56 " " PATH_TYPE@56..58 PATH@56..58 PATH_SEGMENT@56..58 NAME_REF@56..58 IDENT@56..58 "u8" R_PAREN@58..59 ")" WHITESPACE@59..60 " " BLOCK_EXPR@60..62 L_CURLY@60..61 "{" R_CURLY@61..62 "}" WHITESPACE@62..64 "\n\n" EXTERN_BLOCK@64..128 ABI@64..74 EXTERN_KW@64..70 "extern" WHITESPACE@70..71 " " STRING@71..74 "\"C\"" WHITESPACE@74..75 " " EXTERN_ITEM_LIST@75..128 L_CURLY@75..76 "{" WHITESPACE@76..77 " " FN@77..126 FN_KW@77..79 "fn" WHITESPACE@79..80 " " NAME@80..86 IDENT@80..86 "printf" PARAM_LIST@86..118 L_PAREN@86..87 "(" PARAM@87..104 IDENT_PAT@87..93 NAME@87..93 IDENT@87..93 "format" COLON@93..94 ":" WHITESPACE@94..95 " " PTR_TYPE@95..104 STAR@95..96 "*" CONST_KW@96..101 "const" WHITESPACE@101..102 " " PATH_TYPE@102..104 PATH@102..104 PATH_SEGMENT@102..104 NAME_REF@102..104 IDENT@102..104 "i8" COMMA@104..105 "," WHITESPACE@105..106 " " ATTR@106..113 POUND@106..107 "#" L_BRACK@107..108 "[" PATH@108..112 PATH_SEGMENT@108..112 NAME_REF@108..112 IDENT@108..112 "attr" R_BRACK@112..113 "]" WHITESPACE@113..114 " " PARAM@114..117 DOT3@114..117 "..." R_PAREN@117..118 ")" WHITESPACE@118..119 " " RET_TYPE@119..125 THIN_ARROW@119..121 "->" WHITESPACE@121..122 " " PATH_TYPE@122..125 PATH@122..125 PATH_SEGMENT@122..125 NAME_REF@122..125 IDENT@122..125 "i32" SEMICOLON@125..126 ";" WHITESPACE@126..127 " " R_CURLY@127..128 "}" WHITESPACE@128..130 "\n\n" FN@130..172 FN_KW@130..132 "fn" WHITESPACE@132..133 " " NAME@133..136 IDENT@133..136 "foo" GENERIC_PARAM_LIST@136..168 L_ANGLE@136..137 "<" TYPE_PARAM@137..167 NAME@137..138 IDENT@137..138 "F" COLON@138..139 ":" WHITESPACE@139..140 " " TYPE_BOUND_LIST@140..167 TYPE_BOUND@140..167 PATH_TYPE@140..167 PATH@140..167 PATH_SEGMENT@140..167 NAME_REF@140..145 IDENT@140..145 "FnMut" PARAM_LIST@145..167 L_PAREN@145..146 "(" ATTR@146..153 POUND@146..147 "#" L_BRACK@147..148 "[" PATH@148..152 PATH_SEGMENT@148..152 NAME_REF@148..152 IDENT@148..152 "attr" R_BRACK@152..153 "]" WHITESPACE@153..154 " " PARAM@154..166 REF_TYPE@154..166 AMP@154..155 "&" MUT_KW@155..158 "mut" WHITESPACE@158..159 " " PATH_TYPE@159..166 PATH@159..166 PATH_SEGMENT@159..166 NAME_REF@159..162 IDENT@159..162 "Foo" GENERIC_ARG_LIST@162..166 L_ANGLE@162..163 "<" LIFETIME_ARG@163..165 LIFETIME@163..165 "\'a" R_ANGLE@165..166 ">" R_PAREN@166..167 ")" R_ANGLE@167..168 ">" PARAM_LIST@168..170 L_PAREN@168..169 "(" R_PAREN@169..170 ")" BLOCK_EXPR@170..172 L_CURLY@170..171 "{" R_CURLY@171..172 "}" WHITESPACE@172..174 "\n\n" TRAIT@174..236 TRAIT_KW@174..179 "trait" WHITESPACE@179..180 " " NAME@180..183 IDENT@180..183 "Foo" WHITESPACE@183..184 " " ASSOC_ITEM_LIST@184..236 L_CURLY@184..185 "{" WHITESPACE@185..190 "\n " FN@190..234 FN_KW@190..192 "fn" WHITESPACE@192..193 " " NAME@193..196 IDENT@193..196 "bar" PARAM_LIST@196..233 L_PAREN@196..197 "(" ATTR@197..204 POUND@197..198 "#" L_BRACK@198..199 "[" PATH@199..203 PATH_SEGMENT@199..203 NAME_REF@199..203 IDENT@199..203 "attr" R_BRACK@203..204 "]" WHITESPACE@204..205 " " PARAM@205..211 WILDCARD_PAT@205..206 UNDERSCORE@205..206 "_" COLON@206..207 ":" WHITESPACE@207..208 " " PATH_TYPE@208..211 PATH@208..211 PATH_SEGMENT@208..211 NAME_REF@208..211 IDENT@208..211 "u64" COMMA@211..212 "," WHITESPACE@212..213 " " ATTR@213..221 POUND@213..214 "#" WHITESPACE@214..215 " " L_BRACK@215..216 "[" PATH@216..220 PATH_SEGMENT@216..220 NAME_REF@216..220 IDENT@216..220 "attr" R_BRACK@220..221 "]" WHITESPACE@221..222 " " PARAM@222..232 IDENT_PAT@222..227 MUT_KW@222..225 "mut" WHITESPACE@225..226 " " NAME@226..227 IDENT@226..227 "x" COLON@227..228 ":" WHITESPACE@228..229 " " PATH_TYPE@229..232 PATH@229..232 PATH_SEGMENT@229..232 NAME_REF@229..232 IDENT@229..232 "i32" R_PAREN@232..233 ")" SEMICOLON@233..234 ";" WHITESPACE@234..235 "\n" R_CURLY@235..236 "}" WHITESPACE@236..238 "\n\n" IMPL@238..519 IMPL_KW@238..242 "impl" WHITESPACE@242..243 " " PATH_TYPE@243..244 PATH@243..244 PATH_SEGMENT@243..244 NAME_REF@243..244 IDENT@243..244 "S" WHITESPACE@244..245 " " ASSOC_ITEM_LIST@245..519 L_CURLY@245..246 "{" WHITESPACE@246..252 "\n " FN@252..277 FN_KW@252..254 "fn" WHITESPACE@254..255 " " NAME@255..256 IDENT@255..256 "f" PARAM_LIST@256..274 L_PAREN@256..257 "(" ATTR@257..268 POUND@257..258 "#" L_BRACK@258..259 "[" PATH@259..267 PATH_SEGMENT@259..267 NAME_REF@259..267 IDENT@259..267 "must_use" R_BRACK@267..268 "]" WHITESPACE@268..269 " " SELF_PARAM@269..273 SELF_KW@269..273 "self" R_PAREN@273..274 ")" WHITESPACE@274..275 " " BLOCK_EXPR@275..277 L_CURLY@275..276 "{" R_CURLY@276..277 "}" WHITESPACE@277..283 "\n " FN@283..305 FN_KW@283..285 "fn" WHITESPACE@285..286 " " NAME@286..288 IDENT@286..288 "g1" PARAM_LIST@288..302 L_PAREN@288..289 "(" ATTR@289..296 POUND@289..290 "#" L_BRACK@290..291 "[" PATH@291..295 PATH_SEGMENT@291..295 NAME_REF@291..295 IDENT@291..295 "attr" R_BRACK@295..296 "]" WHITESPACE@296..297 " " SELF_PARAM@297..301 SELF_KW@297..301 "self" R_PAREN@301..302 ")" WHITESPACE@302..303 " " BLOCK_EXPR@303..305 L_CURLY@303..304 "{" R_CURLY@304..305 "}" WHITESPACE@305..311 "\n " FN@311..334 FN_KW@311..313 "fn" WHITESPACE@313..314 " " NAME@314..316 IDENT@314..316 "g2" PARAM_LIST@316..331 L_PAREN@316..317 "(" ATTR@317..324 POUND@317..318 "#" L_BRACK@318..319 "[" PATH@319..323 PATH_SEGMENT@319..323 NAME_REF@319..323 IDENT@319..323 "attr" R_BRACK@323..324 "]" WHITESPACE@324..325 " " SELF_PARAM@325..330 AMP@325..326 "&" SELF_KW@326..330 "self" R_PAREN@330..331 ")" WHITESPACE@331..332 " " BLOCK_EXPR@332..334 L_CURLY@332..333 "{" R_CURLY@333..334 "}" WHITESPACE@334..340 "\n " FN@340..371 FN_KW@340..342 "fn" WHITESPACE@342..343 " " NAME@343..345 IDENT@343..345 "g3" GENERIC_PARAM_LIST@345..349 L_ANGLE@345..346 "<" LIFETIME_PARAM@346..348 LIFETIME@346..348 "\'a" R_ANGLE@348..349 ">" PARAM_LIST@349..368 L_PAREN@349..350 "(" ATTR@350..357 POUND@350..351 "#" L_BRACK@351..352 "[" PATH@352..356 PATH_SEGMENT@352..356 NAME_REF@352..356 IDENT@352..356 "attr" R_BRACK@356..357 "]" WHITESPACE@357..358 " " SELF_PARAM@358..367 AMP@358..359 "&" MUT_KW@359..362 "mut" WHITESPACE@362..363 " " SELF_KW@363..367 "self" R_PAREN@367..368 ")" WHITESPACE@368..369 " " BLOCK_EXPR@369..371 L_CURLY@369..370 "{" R_CURLY@370..371 "}" WHITESPACE@371..377 "\n " FN@377..407 FN_KW@377..379 "fn" WHITESPACE@379..380 " " NAME@380..382 IDENT@380..382 "g4" GENERIC_PARAM_LIST@382..386 L_ANGLE@382..383 "<" LIFETIME_PARAM@383..385 LIFETIME@383..385 "\'a" R_ANGLE@385..386 ">" PARAM_LIST@386..404 L_PAREN@386..387 "(" ATTR@387..394 POUND@387..388 "#" L_BRACK@388..389 "[" PATH@389..393 PATH_SEGMENT@389..393 NAME_REF@389..393 IDENT@389..393 "attr" R_BRACK@393..394 "]" WHITESPACE@394..395 " " SELF_PARAM@395..403 AMP@395..396 "&" LIFETIME@396..398 "\'a" WHITESPACE@398..399 " " SELF_KW@399..403 "self" R_PAREN@403..404 ")" WHITESPACE@404..405 " " BLOCK_EXPR@405..407 L_CURLY@405..406 "{" R_CURLY@406..407 "}" WHITESPACE@407..413 "\n " FN@413..447 FN_KW@413..415 "fn" WHITESPACE@415..416 " " NAME@416..418 IDENT@416..418 "g5" GENERIC_PARAM_LIST@418..422 L_ANGLE@418..419 "<" LIFETIME_PARAM@419..421 LIFETIME@419..421 "\'a" R_ANGLE@421..422 ">" PARAM_LIST@422..444 L_PAREN@422..423 "(" ATTR@423..430 POUND@423..424 "#" L_BRACK@424..425 "[" PATH@425..429 PATH_SEGMENT@425..429 NAME_REF@425..429 IDENT@425..429 "attr" R_BRACK@429..430 "]" WHITESPACE@430..431 " " SELF_PARAM@431..443 AMP@431..432 "&" LIFETIME@432..434 "\'a" WHITESPACE@434..435 " " MUT_KW@435..438 "mut" WHITESPACE@438..439 " " SELF_KW@439..443 "self" R_PAREN@443..444 ")" WHITESPACE@444..445 " " BLOCK_EXPR@445..447 L_CURLY@445..446 "{" R_CURLY@446..447 "}" WHITESPACE@447..453 "\n " FN@453..480 FN_KW@453..455 "fn" WHITESPACE@455..456 " " NAME@456..457 IDENT@456..457 "c" PARAM_LIST@457..477 L_PAREN@457..458 "(" ATTR@458..465 POUND@458..459 "#" L_BRACK@459..460 "[" PATH@460..464 PATH_SEGMENT@460..464 NAME_REF@460..464 IDENT@460..464 "attr" R_BRACK@464..465 "]" WHITESPACE@465..466 " " SELF_PARAM@466..476 SELF_KW@466..470 "self" COLON@470..471 ":" WHITESPACE@471..472 " " PATH_TYPE@472..476 PATH@472..476 PATH_SEGMENT@472..476 NAME_REF@472..476 IDENT@472..476 "Self" R_PAREN@476..477 ")" WHITESPACE@477..478 " " BLOCK_EXPR@478..480 L_CURLY@478..479 "{" R_CURLY@479..480 "}" WHITESPACE@480..486 "\n " FN@486..517 FN_KW@486..488 "fn" WHITESPACE@488..489 " " NAME@489..490 IDENT@489..490 "d" PARAM_LIST@490..514 L_PAREN@490..491 "(" ATTR@491..498 POUND@491..492 "#" L_BRACK@492..493 "[" PATH@493..497 PATH_SEGMENT@493..497 NAME_REF@493..497 IDENT@493..497 "attr" R_BRACK@497..498 "]" WHITESPACE@498..499 " " SELF_PARAM@499..513 SELF_KW@499..503 "self" COLON@503..504 ":" WHITESPACE@504..505 " " PATH_TYPE@505..513 PATH@505..513 PATH_SEGMENT@505..513 NAME_REF@505..507 IDENT@505..507 "Rc" GENERIC_ARG_LIST@507..513 L_ANGLE@507..508 "<" TYPE_ARG@508..512 PATH_TYPE@508..512 PATH@508..512 PATH_SEGMENT@508..512 NAME_REF@508..512 IDENT@508..512 "Self" R_ANGLE@512..513 ">" R_PAREN@513..514 ")" WHITESPACE@514..515 " " BLOCK_EXPR@515..517 L_CURLY@515..516 "{" R_CURLY@516..517 "}" WHITESPACE@517..518 "\n" R_CURLY@518..519 "}"