aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_syntax/tests/data/parser/ok/0031_extern.txt
blob: badbf76c56f9c922528c8f87fd0d26a3032dacfa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
SOURCE_FILE@[0; 1598)
  EXTERN_BLOCK@[0; 1597)
    ABI@[0; 6)
      EXTERN_KW@[0; 6) "extern"
    WHITESPACE@[6; 7) " "
    EXTERN_ITEM_LIST@[7; 1597)
      L_CURLY@[7; 8) "{"
      WHITESPACE@[8; 13) "\n    "
      FN_DEF@[13; 87)
        VISIBILITY@[13; 16)
          PUB_KW@[13; 16) "pub"
        WHITESPACE@[16; 17) " "
        FN_KW@[17; 19) "fn"
        WHITESPACE@[19; 20) " "
        NAME@[20; 26)
          IDENT@[20; 26) "socket"
        PARAM_LIST@[26; 75)
          L_PAREN@[26; 27) "("
          PARAM@[27; 42)
            BIND_PAT@[27; 33)
              NAME@[27; 33)
                IDENT@[27; 33) "domain"
            COLON@[33; 34) ":"
            WHITESPACE@[34; 35) " "
            PATH_TYPE@[35; 42)
              PATH@[35; 42)
                PATH_SEGMENT@[35; 42)
                  COLONCOLON@[35; 37) "::"
                  NAME_REF@[37; 42)
                    IDENT@[37; 42) "c_int"
          COMMA@[42; 43) ","
          WHITESPACE@[43; 44) " "
          PARAM@[44; 55)
            BIND_PAT@[44; 46)
              NAME@[44; 46)
                IDENT@[44; 46) "ty"
            COLON@[46; 47) ":"
            WHITESPACE@[47; 48) " "
            PATH_TYPE@[48; 55)
              PATH@[48; 55)
                PATH_SEGMENT@[48; 55)
                  COLONCOLON@[48; 50) "::"
                  NAME_REF@[50; 55)
                    IDENT@[50; 55) "c_int"
          COMMA@[55; 56) ","
          WHITESPACE@[56; 57) " "
          PARAM@[57; 74)
            BIND_PAT@[57; 65)
              NAME@[57; 65)
                IDENT@[57; 65) "protocol"
            COLON@[65; 66) ":"
            WHITESPACE@[66; 67) " "
            PATH_TYPE@[67; 74)
              PATH@[67; 74)
                PATH_SEGMENT@[67; 74)
                  COLONCOLON@[67; 69) "::"
                  NAME_REF@[69; 74)
                    IDENT@[69; 74) "c_int"
          R_PAREN@[74; 75) ")"
        WHITESPACE@[75; 76) " "
        RET_TYPE@[76; 86)
          THIN_ARROW@[76; 78) "->"
          WHITESPACE@[78; 79) " "
          PATH_TYPE@[79; 86)
            PATH@[79; 86)
              PATH_SEGMENT@[79; 86)
                COLONCOLON@[79; 81) "::"
                NAME_REF@[81; 86)
                  IDENT@[81; 86) "c_int"
        SEMI@[86; 87) ";"
      WHITESPACE@[87; 92) "\n    "
      FN_DEF@[92; 167)
        VISIBILITY@[92; 95)
          PUB_KW@[92; 95) "pub"
        WHITESPACE@[95; 96) " "
        FN_KW@[96; 98) "fn"
        WHITESPACE@[98; 99) " "
        NAME@[99; 103)
          IDENT@[99; 103) "bind"
        PARAM_LIST@[103; 155)
          L_PAREN@[103; 104) "("
          PARAM@[104; 115)
            BIND_PAT@[104; 106)
              NAME@[104; 106)
                IDENT@[104; 106) "fd"
            COLON@[106; 107) ":"
            WHITESPACE@[107; 108) " "
            PATH_TYPE@[108; 115)
              PATH@[108; 115)
                PATH_SEGMENT@[108; 115)
                  COLONCOLON@[108; 110) "::"
                  NAME_REF@[110; 115)
                    IDENT@[110; 115) "c_int"
          COMMA@[115; 116) ","
          WHITESPACE@[116; 117) " "
          PARAM@[117; 138)
            BIND_PAT@[117; 121)
              NAME@[117; 121)
                IDENT@[117; 121) "addr"
            COLON@[121; 122) ":"
            WHITESPACE@[122; 123) " "
            POINTER_TYPE@[123; 138)
              STAR@[123; 124) "*"
              CONST_KW@[124; 129) "const"
              WHITESPACE@[129; 130) " "
              PATH_TYPE@[130; 138)
                PATH@[130; 138)
                  PATH_SEGMENT@[130; 138)
                    NAME_REF@[130; 138)
                      IDENT@[130; 138) "sockaddr"
          COMMA@[138; 139) ","
          WHITESPACE@[139; 140) " "
          PARAM@[140; 154)
            BIND_PAT@[140; 143)
              NAME@[140; 143)
                IDENT@[140; 143) "len"
            COLON@[143; 144) ":"
            WHITESPACE@[144; 145) " "
            PATH_TYPE@[145; 154)
              PATH@[145; 154)
                PATH_SEGMENT@[145; 154)
                  NAME_REF@[145; 154)
                    IDENT@[145; 154) "socklen_t"
          R_PAREN@[154; 155) ")"
        WHITESPACE@[155; 156) " "
        RET_TYPE@[156; 166)
          THIN_ARROW@[156; 158) "->"
          WHITESPACE@[158; 159) " "
          PATH_TYPE@[159; 166)
            PATH@[159; 166)
              PATH_SEGMENT@[159; 166)
                COLONCOLON@[159; 161) "::"
                NAME_REF@[161; 166)
                  IDENT@[161; 166) "c_int"
        SEMI@[166; 167) ";"
      WHITESPACE@[167; 172) "\n    "
      FN_DEF@[172; 276)
        VISIBILITY@[172; 175)
          PUB_KW@[172; 175) "pub"
        WHITESPACE@[175; 176) " "
        FN_KW@[176; 178) "fn"
        WHITESPACE@[178; 179) " "
        NAME@[179; 186)
          IDENT@[179; 186) "connect"
        PARAM_LIST@[186; 264)
          L_PAREN@[186; 187) "("
          PARAM@[187; 202)
            BIND_PAT@[187; 193)
              NAME@[187; 193)
                IDENT@[187; 193) "socket"
            COLON@[193; 194) ":"
            WHITESPACE@[194; 195) " "
            PATH_TYPE@[195; 202)
              PATH@[195; 202)
                PATH_SEGMENT@[195; 202)
                  COLONCOLON@[195; 197) "::"
                  NAME_REF@[197; 202)
                    IDENT@[197; 202) "c_int"
          COMMA@[202; 203) ","
          WHITESPACE@[203; 204) " "
          PARAM@[204; 228)
            BIND_PAT@[204; 211)
              NAME@[204; 211)
                IDENT@[204; 211) "address"
            COLON@[211; 212) ":"
            WHITESPACE@[212; 213) " "
            POINTER_TYPE@[213; 228)
              STAR@[213; 214) "*"
              CONST_KW@[214; 219) "const"
              WHITESPACE@[219; 220) " "
              PATH_TYPE@[220; 228)
                PATH@[220; 228)
                  PATH_SEGMENT@[220; 228)
                    NAME_REF@[220; 228)
                      IDENT@[220; 228) "sockaddr"
          COMMA@[228; 229) ","
          WHITESPACE@[229; 249) "\n                   "
          PARAM@[249; 263)
            BIND_PAT@[249; 252)
              NAME@[249; 252)
                IDENT@[249; 252) "len"
            COLON@[252; 253) ":"
            WHITESPACE@[253; 254) " "
            PATH_TYPE@[254; 263)
              PATH@[254; 263)
                PATH_SEGMENT@[254; 263)
                  NAME_REF@[254; 263)
                    IDENT@[254; 263) "socklen_t"
          R_PAREN@[263; 264) ")"
        WHITESPACE@[264; 265) " "
        RET_TYPE@[265; 275)
          THIN_ARROW@[265; 267) "->"
          WHITESPACE@[267; 268) " "
          PATH_TYPE@[268; 275)
            PATH@[268; 275)
              PATH_SEGMENT@[268; 275)
                COLONCOLON@[268; 270) "::"
                NAME_REF@[270; 275)
                  IDENT@[270; 275) "c_int"
        SEMI@[275; 276) ";"
      WHITESPACE@[276; 281) "\n    "
      FN_DEF@[281; 341)
        VISIBILITY@[281; 284)
          PUB_KW@[281; 284) "pub"
        WHITESPACE@[284; 285) " "
        FN_KW@[285; 287) "fn"
        WHITESPACE@[287; 288) " "
        NAME@[288; 294)
          IDENT@[288; 294) "listen"
        PARAM_LIST@[294; 329)
          L_PAREN@[294; 295) "("
          PARAM@[295; 310)
            BIND_PAT@[295; 301)
              NAME@[295; 301)
                IDENT@[295; 301) "socket"
            COLON@[301; 302) ":"
            WHITESPACE@[302; 303) " "
            PATH_TYPE@[303; 310)
              PATH@[303; 310)
                PATH_SEGMENT@[303; 310)
                  COLONCOLON@[303; 305) "::"
                  NAME_REF@[305; 310)
                    IDENT@[305; 310) "c_int"
          COMMA@[310; 311) ","
          WHITESPACE@[311; 312) " "
          PARAM@[312; 328)
            BIND_PAT@[312; 319)
              NAME@[312; 319)
                IDENT@[312; 319) "backlog"
            COLON@[319; 320) ":"
            WHITESPACE@[320; 321) " "
            PATH_TYPE@[321; 328)
              PATH@[321; 328)
                PATH_SEGMENT@[321; 328)
                  COLONCOLON@[321; 323) "::"
                  NAME_REF@[323; 328)
                    IDENT@[323; 328) "c_int"
          R_PAREN@[328; 329) ")"
        WHITESPACE@[329; 330) " "
        RET_TYPE@[330; 340)
          THIN_ARROW@[330; 332) "->"
          WHITESPACE@[332; 333) " "
          PATH_TYPE@[333; 340)
            PATH@[333; 340)
              PATH_SEGMENT@[333; 340)
                COLONCOLON@[333; 335) "::"
                NAME_REF@[335; 340)
                  IDENT@[335; 340) "c_int"
        SEMI@[340; 341) ";"
      WHITESPACE@[341; 346) "\n    "
      FN_DEF@[346; 469)
        VISIBILITY@[346; 349)
          PUB_KW@[346; 349) "pub"
        WHITESPACE@[349; 350) " "
        FN_KW@[350; 352) "fn"
        WHITESPACE@[352; 353) " "
        NAME@[353; 364)
          IDENT@[353; 364) "getsockname"
        PARAM_LIST@[364; 457)
          L_PAREN@[364; 365) "("
          PARAM@[365; 380)
            BIND_PAT@[365; 371)
              NAME@[365; 371)
                IDENT@[365; 371) "socket"
            COLON@[371; 372) ":"
            WHITESPACE@[372; 373) " "
            PATH_TYPE@[373; 380)
              PATH@[373; 380)
                PATH_SEGMENT@[373; 380)
                  COLONCOLON@[373; 375) "::"
                  NAME_REF@[375; 380)
                    IDENT@[375; 380) "c_int"
          COMMA@[380; 381) ","
          WHITESPACE@[381; 382) " "
          PARAM@[382; 404)
            BIND_PAT@[382; 389)
              NAME@[382; 389)
                IDENT@[382; 389) "address"
            COLON@[389; 390) ":"
            WHITESPACE@[390; 391) " "
            POINTER_TYPE@[391; 404)
              STAR@[391; 392) "*"
              MUT_KW@[392; 395) "mut"
              WHITESPACE@[395; 396) " "
              PATH_TYPE@[396; 404)
                PATH@[396; 404)
                  PATH_SEGMENT@[396; 404)
                    NAME_REF@[396; 404)
                      IDENT@[396; 404) "sockaddr"
          COMMA@[404; 405) ","
          WHITESPACE@[405; 429) "\n                       "
          PARAM@[429; 456)
            BIND_PAT@[429; 440)
              NAME@[429; 440)
                IDENT@[429; 440) "address_len"
            COLON@[440; 441) ":"
            WHITESPACE@[441; 442) " "
            POINTER_TYPE@[442; 456)
              STAR@[442; 443) "*"
              MUT_KW@[443; 446) "mut"
              WHITESPACE@[446; 447) " "
              PATH_TYPE@[447; 456)
                PATH@[447; 456)
                  PATH_SEGMENT@[447; 456)
                    NAME_REF@[447; 456)
                      IDENT@[447; 456) "socklen_t"
          R_PAREN@[456; 457) ")"
        WHITESPACE@[457; 458) " "
        RET_TYPE@[458; 468)
          THIN_ARROW@[458; 460) "->"
          WHITESPACE@[460; 461) " "
          PATH_TYPE@[461; 468)
            PATH@[461; 468)
              PATH_SEGMENT@[461; 468)
                COLONCOLON@[461; 463) "::"
                NAME_REF@[463; 468)
                  IDENT@[463; 468) "c_int"
        SEMI@[468; 469) ";"
      WHITESPACE@[469; 474) "\n    "
      FN_DEF@[474; 691)
        VISIBILITY@[474; 477)
          PUB_KW@[474; 477) "pub"
        WHITESPACE@[477; 478) " "
        FN_KW@[478; 480) "fn"
        WHITESPACE@[480; 481) " "
        NAME@[481; 491)
          IDENT@[481; 491) "getsockopt"
        PARAM_LIST@[491; 679)
          L_PAREN@[491; 492) "("
          PARAM@[492; 507)
            BIND_PAT@[492; 498)
              NAME@[492; 498)
                IDENT@[492; 498) "sockfd"
            COLON@[498; 499) ":"
            WHITESPACE@[499; 500) " "
            PATH_TYPE@[500; 507)
              PATH@[500; 507)
                PATH_SEGMENT@[500; 507)
                  COLONCOLON@[500; 502) "::"
                  NAME_REF@[502; 507)
                    IDENT@[502; 507) "c_int"
          COMMA@[507; 508) ","
          WHITESPACE@[508; 531) "\n                      "
          PARAM@[531; 545)
            BIND_PAT@[531; 536)
              NAME@[531; 536)
                IDENT@[531; 536) "level"
            COLON@[536; 537) ":"
            WHITESPACE@[537; 538) " "
            PATH_TYPE@[538; 545)
              PATH@[538; 545)
                PATH_SEGMENT@[538; 545)
                  COLONCOLON@[538; 540) "::"
                  NAME_REF@[540; 545)
                    IDENT@[540; 545) "c_int"
          COMMA@[545; 546) ","
          WHITESPACE@[546; 569) "\n                      "
          PARAM@[569; 585)
            BIND_PAT@[569; 576)
              NAME@[569; 576)
                IDENT@[569; 576) "optname"
            COLON@[576; 577) ":"
            WHITESPACE@[577; 578) " "
            PATH_TYPE@[578; 585)
              PATH@[578; 585)
                PATH_SEGMENT@[578; 585)
                  COLONCOLON@[578; 580) "::"
                  NAME_REF@[580; 585)
                    IDENT@[580; 585) "c_int"
          COMMA@[585; 586) ","
          WHITESPACE@[586; 609) "\n                      "
          PARAM@[609; 630)
            BIND_PAT@[609; 615)
              NAME@[609; 615)
                IDENT@[609; 615) "optval"
            COLON@[615; 616) ":"
            WHITESPACE@[616; 617) " "
            POINTER_TYPE@[617; 630)
              STAR@[617; 618) "*"
              MUT_KW@[618; 621) "mut"
              WHITESPACE@[621; 622) " "
              PATH_TYPE@[622; 630)
                PATH@[622; 630)
                  PATH_SEGMENT@[622; 630)
                    COLONCOLON@[622; 624) "::"
                    NAME_REF@[624; 630)
                      IDENT@[624; 630) "c_void"
          COMMA@[630; 631) ","
          WHITESPACE@[631; 654) "\n                      "
          PARAM@[654; 678)
            BIND_PAT@[654; 660)
              NAME@[654; 660)
                IDENT@[654; 660) "optlen"
            COLON@[660; 661) ":"
            WHITESPACE@[661; 662) " "
            POINTER_TYPE@[662; 678)
              STAR@[662; 663) "*"
              MUT_KW@[663; 666) "mut"
              WHITESPACE@[666; 667) " "
              PATH_TYPE@[667; 678)
                PATH@[667; 678)
                  PATH_SEGMENT@[667; 678)
                    COLONCOLON@[667; 669) "::"
                    NAME_REF@[669; 678)
                      IDENT@[669; 678) "socklen_t"
          R_PAREN@[678; 679) ")"
        WHITESPACE@[679; 680) " "
        RET_TYPE@[680; 690)
          THIN_ARROW@[680; 682) "->"
          WHITESPACE@[682; 683) " "
          PATH_TYPE@[683; 690)
            PATH@[683; 690)
              PATH_SEGMENT@[683; 690)
                COLONCOLON@[683; 685) "::"
                NAME_REF@[685; 690)
                  IDENT@[685; 690) "c_int"
        SEMI@[690; 691) ";"
      WHITESPACE@[691; 696) "\n    "
      FN_DEF@[696; 864)
        VISIBILITY@[696; 699)
          PUB_KW@[696; 699) "pub"
        WHITESPACE@[699; 700) " "
        FN_KW@[700; 702) "fn"
        WHITESPACE@[702; 703) " "
        NAME@[703; 713)
          IDENT@[703; 713) "setsockopt"
        PARAM_LIST@[713; 852)
          L_PAREN@[713; 714) "("
          PARAM@[714; 729)
            BIND_PAT@[714; 720)
              NAME@[714; 720)
                IDENT@[714; 720) "socket"
            COLON@[720; 721) ":"
            WHITESPACE@[721; 722) " "
            PATH_TYPE@[722; 729)
              PATH@[722; 729)
                PATH_SEGMENT@[722; 729)
                  COLONCOLON@[722; 724) "::"
                  NAME_REF@[724; 729)
                    IDENT@[724; 729) "c_int"
          COMMA@[729; 730) ","
          WHITESPACE@[730; 731) " "
          PARAM@[731; 745)
            BIND_PAT@[731; 736)
              NAME@[731; 736)
                IDENT@[731; 736) "level"
            COLON@[736; 737) ":"
            WHITESPACE@[737; 738) " "
            PATH_TYPE@[738; 745)
              PATH@[738; 745)
                PATH_SEGMENT@[738; 745)
                  COLONCOLON@[738; 740) "::"
                  NAME_REF@[740; 745)
                    IDENT@[740; 745) "c_int"
          COMMA@[745; 746) ","
          WHITESPACE@[746; 747) " "
          PARAM@[747; 760)
            BIND_PAT@[747; 751)
              NAME@[747; 751)
                IDENT@[747; 751) "name"
            COLON@[751; 752) ":"
            WHITESPACE@[752; 753) " "
            PATH_TYPE@[753; 760)
              PATH@[753; 760)
                PATH_SEGMENT@[753; 760)
                  COLONCOLON@[753; 755) "::"
                  NAME_REF@[755; 760)
                    IDENT@[755; 760) "c_int"
          COMMA@[760; 761) ","
          WHITESPACE@[761; 784) "\n                      "
          PARAM@[784; 806)
            BIND_PAT@[784; 789)
              NAME@[784; 789)
                IDENT@[784; 789) "value"
            COLON@[789; 790) ":"
            WHITESPACE@[790; 791) " "
            POINTER_TYPE@[791; 806)
              STAR@[791; 792) "*"
              CONST_KW@[792; 797) "const"
              WHITESPACE@[797; 798) " "
              PATH_TYPE@[798; 806)
                PATH@[798; 806)
                  PATH_SEGMENT@[798; 806)
                    COLONCOLON@[798; 800) "::"
                    NAME_REF@[800; 806)
                      IDENT@[800; 806) "c_void"
          COMMA@[806; 807) ","
          WHITESPACE@[807; 830) "\n                      "
          PARAM@[830; 851)
            BIND_PAT@[830; 840)
              NAME@[830; 840)
                IDENT@[830; 840) "option_len"
            COLON@[840; 841) ":"
            WHITESPACE@[841; 842) " "
            PATH_TYPE@[842; 851)
              PATH@[842; 851)
                PATH_SEGMENT@[842; 851)
                  NAME_REF@[842; 851)
                    IDENT@[842; 851) "socklen_t"
          R_PAREN@[851; 852) ")"
        WHITESPACE@[852; 853) " "
        RET_TYPE@[853; 863)
          THIN_ARROW@[853; 855) "->"
          WHITESPACE@[855; 856) " "
          PATH_TYPE@[856; 863)
            PATH@[856; 863)
              PATH_SEGMENT@[856; 863)
                COLONCOLON@[856; 858) "::"
                NAME_REF@[858; 863)
                  IDENT@[858; 863) "c_int"
        SEMI@[863; 864) ";"
      WHITESPACE@[864; 869) "\n    "
      FN_DEF@[869; 992)
        VISIBILITY@[869; 872)
          PUB_KW@[869; 872) "pub"
        WHITESPACE@[872; 873) " "
        FN_KW@[873; 875) "fn"
        WHITESPACE@[875; 876) " "
        NAME@[876; 887)
          IDENT@[876; 887) "getpeername"
        PARAM_LIST@[887; 980)
          L_PAREN@[887; 888) "("
          PARAM@[888; 903)
            BIND_PAT@[888; 894)
              NAME@[888; 894)
                IDENT@[888; 894) "socket"
            COLON@[894; 895) ":"
            WHITESPACE@[895; 896) " "
            PATH_TYPE@[896; 903)
              PATH@[896; 903)
                PATH_SEGMENT@[896; 903)
                  COLONCOLON@[896; 898) "::"
                  NAME_REF@[898; 903)
                    IDENT@[898; 903) "c_int"
          COMMA@[903; 904) ","
          WHITESPACE@[904; 905) " "
          PARAM@[905; 927)
            BIND_PAT@[905; 912)
              NAME@[905; 912)
                IDENT@[905; 912) "address"
            COLON@[912; 913) ":"
            WHITESPACE@[913; 914) " "
            POINTER_TYPE@[914; 927)
              STAR@[914; 915) "*"
              MUT_KW@[915; 918) "mut"
              WHITESPACE@[918; 919) " "
              PATH_TYPE@[919; 927)
                PATH@[919; 927)
                  PATH_SEGMENT@[919; 927)
                    NAME_REF@[919; 927)
                      IDENT@[919; 927) "sockaddr"
          COMMA@[927; 928) ","
          WHITESPACE@[928; 952) "\n                       "
          PARAM@[952; 979)
            BIND_PAT@[952; 963)
              NAME@[952; 963)
                IDENT@[952; 963) "address_len"
            COLON@[963; 964) ":"
            WHITESPACE@[964; 965) " "
            POINTER_TYPE@[965; 979)
              STAR@[965; 966) "*"
              MUT_KW@[966; 969) "mut"
              WHITESPACE@[969; 970) " "
              PATH_TYPE@[970; 979)
                PATH@[970; 979)
                  PATH_SEGMENT@[970; 979)
                    NAME_REF@[970; 979)
                      IDENT@[970; 979) "socklen_t"
          R_PAREN@[979; 980) ")"
        WHITESPACE@[980; 981) " "
        RET_TYPE@[981; 991)
          THIN_ARROW@[981; 983) "->"
          WHITESPACE@[983; 984) " "
          PATH_TYPE@[984; 991)
            PATH@[984; 991)
              PATH_SEGMENT@[984; 991)
                COLONCOLON@[984; 986) "::"
                NAME_REF@[986; 991)
                  IDENT@[986; 991) "c_int"
        SEMI@[991; 992) ";"
      WHITESPACE@[992; 997) "\n    "
      FN_DEF@[997; 1173)
        VISIBILITY@[997; 1000)
          PUB_KW@[997; 1000) "pub"
        WHITESPACE@[1000; 1001) " "
        FN_KW@[1001; 1003) "fn"
        WHITESPACE@[1003; 1004) " "
        NAME@[1004; 1010)
          IDENT@[1004; 1010) "sendto"
        PARAM_LIST@[1010; 1159)
          L_PAREN@[1010; 1011) "("
          PARAM@[1011; 1026)
            BIND_PAT@[1011; 1017)
              NAME@[1011; 1017)
                IDENT@[1011; 1017) "socket"
            COLON@[1017; 1018) ":"
            WHITESPACE@[1018; 1019) " "
            PATH_TYPE@[1019; 1026)
              PATH@[1019; 1026)
                PATH_SEGMENT@[1019; 1026)
                  COLONCOLON@[1019; 1021) "::"
                  NAME_REF@[1021; 1026)
                    IDENT@[1021; 1026) "c_int"
          COMMA@[1026; 1027) ","
          WHITESPACE@[1027; 1028) " "
          PARAM@[1028; 1048)
            BIND_PAT@[1028; 1031)
              NAME@[1028; 1031)
                IDENT@[1028; 1031) "buf"
            COLON@[1031; 1032) ":"
            WHITESPACE@[1032; 1033) " "
            POINTER_TYPE@[1033; 1048)
              STAR@[1033; 1034) "*"
              CONST_KW@[1034; 1039) "const"
              WHITESPACE@[1039; 1040) " "
              PATH_TYPE@[1040; 1048)
                PATH@[1040; 1048)
                  PATH_SEGMENT@[1040; 1048)
                    COLONCOLON@[1040; 1042) "::"
                    NAME_REF@[1042; 1048)
                      IDENT@[1042; 1048) "c_void"
          COMMA@[1048; 1049) ","
          WHITESPACE@[1049; 1050) " "
          PARAM@[1050; 1063)
            BIND_PAT@[1050; 1053)
              NAME@[1050; 1053)
                IDENT@[1050; 1053) "len"
            COLON@[1053; 1054) ":"
            WHITESPACE@[1054; 1055) " "
            PATH_TYPE@[1055; 1063)
              PATH@[1055; 1063)
                PATH_SEGMENT@[1055; 1063)
                  COLONCOLON@[1055; 1057) "::"
                  NAME_REF@[1057; 1063)
                    IDENT@[1057; 1063) "size_t"
          COMMA@[1063; 1064) ","
          WHITESPACE@[1064; 1083) "\n                  "
          PARAM@[1083; 1097)
            BIND_PAT@[1083; 1088)
              NAME@[1083; 1088)
                IDENT@[1083; 1088) "flags"
            COLON@[1088; 1089) ":"
            WHITESPACE@[1089; 1090) " "
            PATH_TYPE@[1090; 1097)
              PATH@[1090; 1097)
                PATH_SEGMENT@[1090; 1097)
                  COLONCOLON@[1090; 1092) "::"
                  NAME_REF@[1092; 1097)
                    IDENT@[1092; 1097) "c_int"
          COMMA@[1097; 1098) ","
          WHITESPACE@[1098; 1099) " "
          PARAM@[1099; 1120)
            BIND_PAT@[1099; 1103)
              NAME@[1099; 1103)
                IDENT@[1099; 1103) "addr"
            COLON@[1103; 1104) ":"
            WHITESPACE@[1104; 1105) " "
            POINTER_TYPE@[1105; 1120)
              STAR@[1105; 1106) "*"
              CONST_KW@[1106; 1111) "const"
              WHITESPACE@[1111; 1112) " "
              PATH_TYPE@[1112; 1120)
                PATH@[1112; 1120)
                  PATH_SEGMENT@[1112; 1120)
                    NAME_REF@[1112; 1120)
                      IDENT@[1112; 1120) "sockaddr"
          COMMA@[1120; 1121) ","
          WHITESPACE@[1121; 1140) "\n                  "
          PARAM@[1140; 1158)
            BIND_PAT@[1140; 1147)
              NAME@[1140; 1147)
                IDENT@[1140; 1147) "addrlen"
            COLON@[1147; 1148) ":"
            WHITESPACE@[1148; 1149) " "
            PATH_TYPE@[1149; 1158)
              PATH@[1149; 1158)
                PATH_SEGMENT@[1149; 1158)
                  NAME_REF@[1149; 1158)
                    IDENT@[1149; 1158) "socklen_t"
          R_PAREN@[1158; 1159) ")"
        WHITESPACE@[1159; 1160) " "
        RET_TYPE@[1160; 1172)
          THIN_ARROW@[1160; 1162) "->"
          WHITESPACE@[1162; 1163) " "
          PATH_TYPE@[1163; 1172)
            PATH@[1163; 1172)
              PATH_SEGMENT@[1163; 1172)
                COLONCOLON@[1163; 1165) "::"
                NAME_REF@[1165; 1172)
                  IDENT@[1165; 1172) "ssize_t"
        SEMI@[1172; 1173) ";"
      WHITESPACE@[1173; 1178) "\n    "
      FN_DEF@[1178; 1289)
        VISIBILITY@[1178; 1181)
          PUB_KW@[1178; 1181) "pub"
        WHITESPACE@[1181; 1182) " "
        FN_KW@[1182; 1184) "fn"
        WHITESPACE@[1184; 1185) " "
        NAME@[1185; 1189)
          IDENT@[1185; 1189) "send"
        PARAM_LIST@[1189; 1275)
          L_PAREN@[1189; 1190) "("
          PARAM@[1190; 1205)
            BIND_PAT@[1190; 1196)
              NAME@[1190; 1196)
                IDENT@[1190; 1196) "socket"
            COLON@[1196; 1197) ":"
            WHITESPACE@[1197; 1198) " "
            PATH_TYPE@[1198; 1205)
              PATH@[1198; 1205)
                PATH_SEGMENT@[1198; 1205)
                  COLONCOLON@[1198; 1200) "::"
                  NAME_REF@[1200; 1205)
                    IDENT@[1200; 1205) "c_int"
          COMMA@[1205; 1206) ","
          WHITESPACE@[1206; 1207) " "
          PARAM@[1207; 1227)
            BIND_PAT@[1207; 1210)
              NAME@[1207; 1210)
                IDENT@[1207; 1210) "buf"
            COLON@[1210; 1211) ":"
            WHITESPACE@[1211; 1212) " "
            POINTER_TYPE@[1212; 1227)
              STAR@[1212; 1213) "*"
              CONST_KW@[1213; 1218) "const"
              WHITESPACE@[1218; 1219) " "
              PATH_TYPE@[1219; 1227)
                PATH@[1219; 1227)
                  PATH_SEGMENT@[1219; 1227)
                    COLONCOLON@[1219; 1221) "::"
                    NAME_REF@[1221; 1227)
                      IDENT@[1221; 1227) "c_void"
          COMMA@[1227; 1228) ","
          WHITESPACE@[1228; 1229) " "
          PARAM@[1229; 1242)
            BIND_PAT@[1229; 1232)
              NAME@[1229; 1232)
                IDENT@[1229; 1232) "len"
            COLON@[1232; 1233) ":"
            WHITESPACE@[1233; 1234) " "
            PATH_TYPE@[1234; 1242)
              PATH@[1234; 1242)
                PATH_SEGMENT@[1234; 1242)
                  COLONCOLON@[1234; 1236) "::"
                  NAME_REF@[1236; 1242)
                    IDENT@[1236; 1242) "size_t"
          COMMA@[1242; 1243) ","
          WHITESPACE@[1243; 1260) "\n                "
          PARAM@[1260; 1274)
            BIND_PAT@[1260; 1265)
              NAME@[1260; 1265)
                IDENT@[1260; 1265) "flags"
            COLON@[1265; 1266) ":"
            WHITESPACE@[1266; 1267) " "
            PATH_TYPE@[1267; 1274)
              PATH@[1267; 1274)
                PATH_SEGMENT@[1267; 1274)
                  COLONCOLON@[1267; 1269) "::"
                  NAME_REF@[1269; 1274)
                    IDENT@[1269; 1274) "c_int"
          R_PAREN@[1274; 1275) ")"
        WHITESPACE@[1275; 1276) " "
        RET_TYPE@[1276; 1288)
          THIN_ARROW@[1276; 1278) "->"
          WHITESPACE@[1278; 1279) " "
          PATH_TYPE@[1279; 1288)
            PATH@[1279; 1288)
              PATH_SEGMENT@[1279; 1288)
                COLONCOLON@[1279; 1281) "::"
                NAME_REF@[1281; 1288)
                  IDENT@[1281; 1288) "ssize_t"
        SEMI@[1288; 1289) ";"
      WHITESPACE@[1289; 1294) "\n    "
      FN_DEF@[1294; 1481)
        VISIBILITY@[1294; 1297)
          PUB_KW@[1294; 1297) "pub"
        WHITESPACE@[1297; 1298) " "
        FN_KW@[1298; 1300) "fn"
        WHITESPACE@[1300; 1301) " "
        NAME@[1301; 1309)
          IDENT@[1301; 1309) "recvfrom"
        PARAM_LIST@[1309; 1467)
          L_PAREN@[1309; 1310) "("
          PARAM@[1310; 1325)
            BIND_PAT@[1310; 1316)
              NAME@[1310; 1316)
                IDENT@[1310; 1316) "socket"
            COLON@[1316; 1317) ":"
            WHITESPACE@[1317; 1318) " "
            PATH_TYPE@[1318; 1325)
              PATH@[1318; 1325)
                PATH_SEGMENT@[1318; 1325)
                  COLONCOLON@[1318; 1320) "::"
                  NAME_REF@[1320; 1325)
                    IDENT@[1320; 1325) "c_int"
          COMMA@[1325; 1326) ","
          WHITESPACE@[1326; 1327) " "
          PARAM@[1327; 1345)
            BIND_PAT@[1327; 1330)
              NAME@[1327; 1330)
                IDENT@[1327; 1330) "buf"
            COLON@[1330; 1331) ":"
            WHITESPACE@[1331; 1332) " "
            POINTER_TYPE@[1332; 1345)
              STAR@[1332; 1333) "*"
              MUT_KW@[1333; 1336) "mut"
              WHITESPACE@[1336; 1337) " "
              PATH_TYPE@[1337; 1345)
                PATH@[1337; 1345)
                  PATH_SEGMENT@[1337; 1345)
                    COLONCOLON@[1337; 1339) "::"
                    NAME_REF@[1339; 1345)
                      IDENT@[1339; 1345) "c_void"
          COMMA@[1345; 1346) ","
          WHITESPACE@[1346; 1347) " "
          PARAM@[1347; 1360)
            BIND_PAT@[1347; 1350)
              NAME@[1347; 1350)
                IDENT@[1347; 1350) "len"
            COLON@[1350; 1351) ":"
            WHITESPACE@[1351; 1352) " "
            PATH_TYPE@[1352; 1360)
              PATH@[1352; 1360)
                PATH_SEGMENT@[1352; 1360)
                  COLONCOLON@[1352; 1354) "::"
                  NAME_REF@[1354; 1360)
                    IDENT@[1354; 1360) "size_t"
          COMMA@[1360; 1361) ","
          WHITESPACE@[1361; 1382) "\n                    "
          PARAM@[1382; 1396)
            BIND_PAT@[1382; 1387)
              NAME@[1382; 1387)
                IDENT@[1382; 1387) "flags"
            COLON@[1387; 1388) ":"
            WHITESPACE@[1388; 1389) " "
            PATH_TYPE@[1389; 1396)
              PATH@[1389; 1396)
                PATH_SEGMENT@[1389; 1396)
                  COLONCOLON@[1389; 1391) "::"
                  NAME_REF@[1391; 1396)
                    IDENT@[1391; 1396) "c_int"
          COMMA@[1396; 1397) ","
          WHITESPACE@[1397; 1398) " "
          PARAM@[1398; 1419)
            BIND_PAT@[1398; 1402)
              NAME@[1398; 1402)
                IDENT@[1398; 1402) "addr"
            COLON@[1402; 1403) ":"
            WHITESPACE@[1403; 1404) " "
            POINTER_TYPE@[1404; 1419)
              STAR@[1404; 1405) "*"
              MUT_KW@[1405; 1408) "mut"
              WHITESPACE@[1408; 1409) " "
              PATH_TYPE@[1409; 1419)
                PATH@[1409; 1419)
                  PATH_SEGMENT@[1409; 1419)
                    COLONCOLON@[1409; 1411) "::"
                    NAME_REF@[1411; 1419)
                      IDENT@[1411; 1419) "sockaddr"
          COMMA@[1419; 1420) ","
          WHITESPACE@[1420; 1441) "\n                    "
          PARAM@[1441; 1466)
            BIND_PAT@[1441; 1448)
              NAME@[1441; 1448)
                IDENT@[1441; 1448) "addrlen"
            COLON@[1448; 1449) ":"
            WHITESPACE@[1449; 1450) " "
            POINTER_TYPE@[1450; 1466)
              STAR@[1450; 1451) "*"
              MUT_KW@[1451; 1454) "mut"
              WHITESPACE@[1454; 1455) " "
              PATH_TYPE@[1455; 1466)
                PATH@[1455; 1466)
                  PATH_SEGMENT@[1455; 1466)
                    COLONCOLON@[1455; 1457) "::"
                    NAME_REF@[1457; 1466)
                      IDENT@[1457; 1466) "socklen_t"
          R_PAREN@[1466; 1467) ")"
        WHITESPACE@[1467; 1468) " "
        RET_TYPE@[1468; 1480)
          THIN_ARROW@[1468; 1470) "->"
          WHITESPACE@[1470; 1471) " "
          PATH_TYPE@[1471; 1480)
            PATH@[1471; 1480)
              PATH_SEGMENT@[1471; 1480)
                COLONCOLON@[1471; 1473) "::"
                NAME_REF@[1473; 1480)
                  IDENT@[1473; 1480) "ssize_t"
        SEMI@[1480; 1481) ";"
      WHITESPACE@[1481; 1486) "\n    "
      FN_DEF@[1486; 1595)
        VISIBILITY@[1486; 1489)
          PUB_KW@[1486; 1489) "pub"
        WHITESPACE@[1489; 1490) " "
        FN_KW@[1490; 1492) "fn"
        WHITESPACE@[1492; 1493) " "
        NAME@[1493; 1497)
          IDENT@[1493; 1497) "recv"
        PARAM_LIST@[1497; 1581)
          L_PAREN@[1497; 1498) "("
          PARAM@[1498; 1513)
            BIND_PAT@[1498; 1504)
              NAME@[1498; 1504)
                IDENT@[1498; 1504) "socket"
            COLON@[1504; 1505) ":"
            WHITESPACE@[1505; 1506) " "
            PATH_TYPE@[1506; 1513)
              PATH@[1506; 1513)
                PATH_SEGMENT@[1506; 1513)
                  COLONCOLON@[1506; 1508) "::"
                  NAME_REF@[1508; 1513)
                    IDENT@[1508; 1513) "c_int"
          COMMA@[1513; 1514) ","
          WHITESPACE@[1514; 1515) " "
          PARAM@[1515; 1533)
            BIND_PAT@[1515; 1518)
              NAME@[1515; 1518)
                IDENT@[1515; 1518) "buf"
            COLON@[1518; 1519) ":"
            WHITESPACE@[1519; 1520) " "
            POINTER_TYPE@[1520; 1533)
              STAR@[1520; 1521) "*"
              MUT_KW@[1521; 1524) "mut"
              WHITESPACE@[1524; 1525) " "
              PATH_TYPE@[1525; 1533)
                PATH@[1525; 1533)
                  PATH_SEGMENT@[1525; 1533)
                    COLONCOLON@[1525; 1527) "::"
                    NAME_REF@[1527; 1533)
                      IDENT@[1527; 1533) "c_void"
          COMMA@[1533; 1534) ","
          WHITESPACE@[1534; 1535) " "
          PARAM@[1535; 1548)
            BIND_PAT@[1535; 1538)
              NAME@[1535; 1538)
                IDENT@[1535; 1538) "len"
            COLON@[1538; 1539) ":"
            WHITESPACE@[1539; 1540) " "
            PATH_TYPE@[1540; 1548)
              PATH@[1540; 1548)
                PATH_SEGMENT@[1540; 1548)
                  COLONCOLON@[1540; 1542) "::"
                  NAME_REF@[1542; 1548)
                    IDENT@[1542; 1548) "size_t"
          COMMA@[1548; 1549) ","
          WHITESPACE@[1549; 1566) "\n                "
          PARAM@[1566; 1580)
            BIND_PAT@[1566; 1571)
              NAME@[1566; 1571)
                IDENT@[1566; 1571) "flags"
            COLON@[1571; 1572) ":"
            WHITESPACE@[1572; 1573) " "
            PATH_TYPE@[1573; 1580)
              PATH@[1573; 1580)
                PATH_SEGMENT@[1573; 1580)
                  COLONCOLON@[1573; 1575) "::"
                  NAME_REF@[1575; 1580)
                    IDENT@[1575; 1580) "c_int"
          R_PAREN@[1580; 1581) ")"
        WHITESPACE@[1581; 1582) " "
        RET_TYPE@[1582; 1594)
          THIN_ARROW@[1582; 1584) "->"
          WHITESPACE@[1584; 1585) " "
          PATH_TYPE@[1585; 1594)
            PATH@[1585; 1594)
              PATH_SEGMENT@[1585; 1594)
                COLONCOLON@[1585; 1587) "::"
                NAME_REF@[1587; 1594)
                  IDENT@[1587; 1594) "ssize_t"
        SEMI@[1594; 1595) ";"
      WHITESPACE@[1595; 1596) "\n"
      R_CURLY@[1596; 1597) "}"
  WHITESPACE@[1597; 1598) "\n"