notify-rust 3.1.0

Show desktop notifications. Similar to libnotify, with no gtk or Qt dependencies.
Documentation
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
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
   Compiling notify-rust v3.0.3 (file:///home/hendrik/code/rust/notify-rust)
Item { ident: #0, attrs: [Spanned { node: Attribute_ { id: AttrId(1245), style: Outer, value: Spanned { node: MetaWord("prelude_import"), span: Span { lo: BytePos(0), hi: BytePos(0), expn_id: ExpnId(216) } }, is_sugared_doc: false }, span: Span { lo: BytePos(0), hi: BytePos(0), expn_id: ExpnId(216) } }], id: 2, node: ItemUse(Spanned { node: ViewPathGlob(path(std::prelude::v1)), span: Span { lo: BytePos(0), hi: BytePos(0), expn_id: ExpnId(4294967295) } }), vis: Inherited, span: Span { lo: BytePos(0), hi: BytePos(0), expn_id: ExpnId(216) } }
Item { ident: std#0, attrs: [Spanned { node: Attribute_ { id: AttrId(257), style: Outer, value: Spanned { node: MetaWord("macro_use"), span: Span { lo: BytePos(0), hi: BytePos(0), expn_id: ExpnId(4294967295) } }, is_sugared_doc: false }, span: Span { lo: BytePos(0), hi: BytePos(0), expn_id: ExpnId(4294967295) } }], id: 3, node: ItemExternCrate(Some(std(120))), vis: Inherited, span: Span { lo: BytePos(0), hi: BytePos(0), expn_id: ExpnId(4294967295) } }
Item { ident: #0, attrs: [], id: 4, node: ItemUse(Spanned { node: ViewPathSimple(env#0, path(std::env)), span: Span { lo: BytePos(2568), hi: BytePos(2576), expn_id: ExpnId(4294967295) } }), vis: Inherited, span: Span { lo: BytePos(2564), hi: BytePos(2577), expn_id: ExpnId(4294967295) } }
Item { ident: #0, attrs: [], id: 5, node: ItemUse(Spanned { node: ViewPathSimple(HashSet#0, path(std::collections::HashSet)), span: Span { lo: BytePos(2582), hi: BytePos(2607), expn_id: ExpnId(4294967295) } }), vis: Inherited, span: Span { lo: BytePos(2578), hi: BytePos(2608), expn_id: ExpnId(4294967295) } }
Item { ident: #0, attrs: [], id: 6, node: ItemUse(Spanned { node: ViewPathSimple(Cow#0, path(std::borrow::Cow)), span: Span { lo: BytePos(2613), hi: BytePos(2629), expn_id: ExpnId(4294967295) } }), vis: Inherited, span: Span { lo: BytePos(2609), hi: BytePos(2630), expn_id: ExpnId(4294967295) } }
Item { ident: #0, attrs: [], id: 7, node: ItemUse(Spanned { node: ViewPathList(path(std::ops), [Spanned { node: PathListIdent { name: Deref#0, rename: None, id: 8 }, span: Span { lo: BytePos(2646), hi: BytePos(2651), expn_id: ExpnId(4294967295) } }, Spanned { node: PathListIdent { name: DerefMut#0, rename: None, id: 9 }, span: Span { lo: BytePos(2652), hi: BytePos(2660), expn_id: ExpnId(4294967295) } }]), span: Span { lo: BytePos(2635), hi: BytePos(2662), expn_id: ExpnId(4294967295) } }), vis: Inherited, span: Span { lo: BytePos(2631), hi: BytePos(2662), expn_id: ExpnId(4294967295) } }
Item { ident: dbus#0, attrs: [], id: 10, node: ItemExternCrate(None), vis: Inherited, span: Span { lo: BytePos(2664), hi: BytePos(2682), expn_id: ExpnId(4294967295) } }
Item { ident: #0, attrs: [], id: 11, node: ItemUse(Spanned { node: ViewPathList(path(dbus), [Spanned { node: PathListIdent { name: Connection#0, rename: None, id: 12 }, span: Span { lo: BytePos(2694), hi: BytePos(2704), expn_id: ExpnId(4294967295) } }, Spanned { node: PathListIdent { name: ConnectionItem#0, rename: None, id: 13 }, span: Span { lo: BytePos(2706), hi: BytePos(2720), expn_id: ExpnId(4294967295) } }, Spanned { node: PathListIdent { name: BusType#0, rename: None, id: 14 }, span: Span { lo: BytePos(2722), hi: BytePos(2729), expn_id: ExpnId(4294967295) } }, Spanned { node: PathListIdent { name: Message#0, rename: None, id: 15 }, span: Span { lo: BytePos(2731), hi: BytePos(2738), expn_id: ExpnId(4294967295) } }, Spanned { node: PathListIdent { name: MessageItem#0, rename: None, id: 16 }, span: Span { lo: BytePos(2740), hi: BytePos(2751), expn_id: ExpnId(4294967295) } }, Spanned { node: PathListIdent { name: Error#0, rename: None, id: 17 }, span: Span { lo: BytePos(2753), hi: BytePos(2758), expn_id: ExpnId(4294967295) } }]), span: Span { lo: BytePos(2687), hi: BytePos(2760), expn_id: ExpnId(4294967295) } }), vis: Inherited, span: Span { lo: BytePos(2683), hi: BytePos(2760), expn_id: ExpnId(4294967295) } }

Item { ident: util#0,
        attrs: [],
        id: 18,
        node: ItemMod(Mod { inner: Span { lo: BytePos(19535), hi: BytePos(20703), expn_id: ExpnId(4294967295) }, items: [Item { ident: #0, attrs: [Spanned { node: Attribute_ { id: AttrId(1246), style: Outer, value: Spanned { node: MetaWord("prelude_import"), span: Span { lo: BytePos(0), hi: BytePos(0), expn_id: ExpnId(216) } }, is_sugared_doc: false }, span: Span { lo: BytePos(0), hi: BytePos(0), expn_id: ExpnId(216) } }], id: 19, node: ItemUse(Spanned { node: ViewPathGlob(path(std::prelude::v1)), span: Span { lo: BytePos(0), hi: BytePos(0), expn_id: ExpnId(4294967295) } }), vis: Inherited, span: Span { lo: BytePos(0), hi: BytePos(0), expn_id: ExpnId(216) } }, Item { ident: #0, attrs: [], id: 20, node: ItemUse(Spanned { node: ViewPathSimple(Cow#0, path(std::borrow::Cow)), span: Span { lo: BytePos(19539), hi: BytePos(19555), expn_id: ExpnId(4294967295) } }), vis: Inherited, span: Span { lo: BytePos(19535), hi: BytePos(19556), expn_id: ExpnId(4294967295) } }, Item { ident: #0, attrs: [], id: 21, node: ItemUse(Spanned { node: ViewPathSimple(MessageItem#0, path(dbus::MessageItem)), span: Span { lo: BytePos(19561), hi: BytePos(19578), expn_id: ExpnId(4294967295) } }), vis: Inherited, span: Span { lo: BytePos(19557), hi: BytePos(19579), expn_id: ExpnId(4294967295) } }, Item { ident: unwrap_message_int#0, attrs: [], id: 22, node: ItemFn(FnDecl { inputs: [Arg { ty: type(&MessageItem), pat: pat(24: item), id: 23 }], output: Return(type(i32)), variadic: false }, Normal, NotConst, Rust, Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 28, predicates: [] } }, Block { stmts: [], expr: Some(expr(30: unwrap_message_str(item).parse::<i32>().unwrap_or(0))), id: 29, rules: DefaultBlock, span: Span { lo: BytePos(19671), hi: BytePos(19731), expn_id: ExpnId(4294967295) } }), vis: Public, span: Span { lo: BytePos(19619), hi: BytePos(19731), expn_id: ExpnId(4294967295) } }, Item { ident: unwrap_message_bool#0, attrs: [], id: 37, node: ItemFn(FnDecl { inputs: [Arg { ty: type(&MessageItem), pat: pat(39: item), id: 38 }], output: Return(type(bool)), variadic: false }, Normal, NotConst, Rust, Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 43, predicates: [] } }, Block { stmts: [], expr: Some(expr(45: unwrap_message_str(item).parse::<bool>().unwrap_or(false))), id: 44, rules: DefaultBlock, span: Span { lo: BytePos(19787), hi: BytePos(19852), expn_id: ExpnId(4294967295) } }), vis: Public, span: Span { lo: BytePos(19733), hi: BytePos(19852), expn_id: ExpnId(4294967295) } }, Item { ident: unwrap_message_str#0, attrs: [], id: 52, node: ItemFn(FnDecl { inputs: [Arg { ty: type(&MessageItem), pat: pat(54: item), id: 53 }], output: Return(type(String)), variadic: false }, Normal, NotConst, Rust, Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 58, predicates: [] } }, Block { stmts: [], expr: Some(expr(60: match item {
    &MessageItem::Str(ref value) => value.to_owned(),
    &MessageItem::Variant(ref value) =>
    match **value {
        MessageItem::Str(ref value) => value.to_owned(),
        _ => "".to_owned(),
    },
    _ => "".to_owned(),
})), id: 59, rules: DefaultBlock, span: Span { lo: BytePos(19910), hi: BytePos(20210), expn_id: ExpnId(4294967295) } }), vis: Public, span: Span { lo: BytePos(19854), hi: BytePos(20210), expn_id: ExpnId(4294967295) } }, Item { ident: unwrap_message_string#0, attrs: [], id: 84, node: ItemFn(FnDecl { inputs: [Arg { ty: type(Option<&MessageItem>), pat: pat(86: item), id: 85 }], output: Return(type(String)), variadic: false }, Normal, NotConst, Rust, Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 91, predicates: [] } }, Block { stmts: [], expr: Some(expr(93: match item {
    Some(&MessageItem::Str(ref value)) => value.clone(),
    Some(&MessageItem::Array(ref items, Cow::Borrowed("{sv}"))) =>
    ::std::fmt::format(::std::fmt::Arguments::new_v1({
                                                         static __STATIC_FMTSTR:
                                                                &'static [&'static str]
                                                                =
                                                             &["DICT   "];
                                                         __STATIC_FMTSTR
                                                     },
                                                     &match (&items,) {
                                                          (__arg0,) =>
                                                          [::std::fmt::ArgumentV1::new(__arg0,
                                                                                       ::std::fmt::Debug::fmt)],
                                                      })),
    Some(&MessageItem::Array(ref items, Cow::Borrowed("s"))) =>
    ::std::fmt::format(::std::fmt::Arguments::new_v1({
                                                         static __STATIC_FMTSTR:
                                                                &'static [&'static str]
                                                                =
                                                             &["ARRAY  "];
                                                         __STATIC_FMTSTR
                                                     },
                                                     &match (&items,) {
                                                          (__arg0,) =>
                                                          [::std::fmt::ArgumentV1::new(__arg0,
                                                                                       ::std::fmt::Debug::fmt)],
                                                      })),
    Some(&MessageItem::Array(ref items, ref sig)) =>
    ::std::fmt::format(::std::fmt::Arguments::new_v1_formatted({
                                                                   static __STATIC_FMTSTR:
                                                                          &'static [&'static str]
                                                                          =
                                                                       &["",
                                                                         " "];
                                                                   __STATIC_FMTSTR
                                                               },
                                                               &match (&items,
                                                                       &sig) {
                                                                    (__argitems,
                                                                     __argsig)
                                                                    =>
                                                                    [::std::fmt::ArgumentV1::new(__argsig,
                                                                                                 ::std::fmt::Debug::fmt),
                                                                     ::std::fmt::ArgumentV1::new(__argitems,
                                                                                                 ::std::fmt::Debug::fmt)],
                                                                },
                                                               {
                                                                   static __STATIC_FMTARGS:
                                                                          &'static [::std::fmt::rt::v1::Argument]
                                                                          =
                                                                       &[::std::fmt::rt::v1::Argument{position:
                                                                                                          ::std::fmt::rt::v1::Position::At(0usize),
                                                                                                      format:
                                                                                                          ::std::fmt::rt::v1::FormatSpec{fill:
                                                                                                                                             ' ',
                                                                                                                                         align:
                                                                                                                                             ::std::fmt::rt::v1::Alignment::Unknown,
                                                                                                                                         flags:
                                                                                                                                             0u32,
                                                                                                                                         precision:
                                                                                                                                             ::std::fmt::rt::v1::Count::Implied,
                                                                                                                                         width:
                                                                                                                                             ::std::fmt::rt::v1::Count::Implied,},},
                                                                         ::std::fmt::rt::v1::Argument{position:
                                                                                                          ::std::fmt::rt::v1::Position::At(1usize),
                                                                                                      format:
                                                                                                          ::std::fmt::rt::v1::FormatSpec{fill:
                                                                                                                                             ' ',
                                                                                                                                         align:
                                                                                                                                             ::std::fmt::rt::v1::Alignment::Unknown,
                                                                                                                                         flags:
                                                                                                                                             0u32,
                                                                                                                                         precision:
                                                                                                                                             ::std::fmt::rt::v1::Count::Implied,
                                                                                                                                         width:
                                                                                                                                             ::std::fmt::rt::v1::Count::Implied,},}];
                                                                   __STATIC_FMTARGS
                                                               })),
    _ => "".to_owned(),
})), id: 92, rules: DefaultBlock, span: Span { lo: BytePos(20279), hi: BytePos(20703), expn_id: ExpnId(4294967295) } }), vis: Public, span: Span { lo: BytePos(20212), hi: BytePos(20703), expn_id: ExpnId(4294967295) } }] }), vis: Inherited, span: Span { lo: BytePos(2762), hi: BytePos(2771), expn_id: ExpnId(4294967295) }
}

Item { ident: #0, attrs: [Spanned { node: Attribute_ { id: AttrId(1246), style: Outer, value: Spanned { node: MetaWord("prelude_import"), span: Span { lo: BytePos(0), hi: BytePos(0), expn_id: ExpnId(216) } }, is_sugared_doc: false }, span: Span { lo: BytePos(0), hi: BytePos(0), expn_id: ExpnId(216) } }], id: 19, node: ItemUse(Spanned { node: ViewPathGlob(path(std::prelude::v1)), span: Span { lo: BytePos(0), hi: BytePos(0), expn_id: ExpnId(4294967295) } }), vis: Inherited, span: Span { lo: BytePos(0), hi: BytePos(0), expn_id: ExpnId(216) } }
Item { ident: #0, attrs: [], id: 20, node: ItemUse(Spanned { node: ViewPathSimple(Cow#0, path(std::borrow::Cow)), span: Span { lo: BytePos(19539), hi: BytePos(19555), expn_id: ExpnId(4294967295) } }), vis: Inherited, span: Span { lo: BytePos(19535), hi: BytePos(19556), expn_id: ExpnId(4294967295) } }
Item { ident: #0, attrs: [], id: 21, node: ItemUse(Spanned { node: ViewPathSimple(MessageItem#0, path(dbus::MessageItem)), span: Span { lo: BytePos(19561), hi: BytePos(19578), expn_id: ExpnId(4294967295) } }), vis: Inherited, span: Span { lo: BytePos(19557), hi: BytePos(19579), expn_id: ExpnId(4294967295) } }
Item { ident: unwrap_message_int#0, attrs: [], id: 22, node: ItemFn(FnDecl { inputs: [Arg { ty: type(&MessageItem), pat: pat(24: item), id: 23 }], output: Return(type(i32)), variadic: false }, Normal, NotConst, Rust, Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 28, predicates: [] } }, Block { stmts: [], expr: Some(expr(30: unwrap_message_str(item).parse::<i32>().unwrap_or(0))), id: 29, rules: DefaultBlock, span: Span { lo: BytePos(19671), hi: BytePos(19731), expn_id: ExpnId(4294967295) } }), vis: Public, span: Span { lo: BytePos(19619), hi: BytePos(19731), expn_id: ExpnId(4294967295) } }
Item { ident: unwrap_message_bool#0, attrs: [], id: 37, node: ItemFn(FnDecl { inputs: [Arg { ty: type(&MessageItem), pat: pat(39: item), id: 38 }], output: Return(type(bool)), variadic: false }, Normal, NotConst, Rust, Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 43, predicates: [] } }, Block { stmts: [], expr: Some(expr(45: unwrap_message_str(item).parse::<bool>().unwrap_or(false))), id: 44, rules: DefaultBlock, span: Span { lo: BytePos(19787), hi: BytePos(19852), expn_id: ExpnId(4294967295) } }), vis: Public, span: Span { lo: BytePos(19733), hi: BytePos(19852), expn_id: ExpnId(4294967295) } }
Item { ident: unwrap_message_str#0, attrs: [], id: 52, node: ItemFn(FnDecl { inputs: [Arg { ty: type(&MessageItem), pat: pat(54: item), id: 53 }], output: Return(type(String)), variadic: false }, Normal, NotConst, Rust, Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 58, predicates: [] } }, Block { stmts: [], expr: Some(expr(60: match item {
    &MessageItem::Str(ref value) => value.to_owned(),
    &MessageItem::Variant(ref value) =>
    match **value {
        MessageItem::Str(ref value) => value.to_owned(),
        _ => "".to_owned(),
    },
    _ => "".to_owned(),
})), id: 59, rules: DefaultBlock, span: Span { lo: BytePos(19910), hi: BytePos(20210), expn_id: ExpnId(4294967295) } }), vis: Public, span: Span { lo: BytePos(19854), hi: BytePos(20210), expn_id: ExpnId(4294967295) } }
Item { ident: unwrap_message_string#0, attrs: [], id: 84, node: ItemFn(FnDecl { inputs: [Arg { ty: type(Option<&MessageItem>), pat: pat(86: item), id: 85 }], output: Return(type(String)), variadic: false }, Normal, NotConst, Rust, Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 91, predicates: [] } }, Block { stmts: [], expr: Some(expr(93: match item {
    Some(&MessageItem::Str(ref value)) => value.clone(),
    Some(&MessageItem::Array(ref items, Cow::Borrowed("{sv}"))) =>
    ::std::fmt::format(::std::fmt::Arguments::new_v1({
                                                         static __STATIC_FMTSTR:
                                                                &'static [&'static str]
                                                                =
                                                             &["DICT   "];
                                                         __STATIC_FMTSTR
                                                     },
                                                     &match (&items,) {
                                                          (__arg0,) =>
                                                          [::std::fmt::ArgumentV1::new(__arg0,
                                                                                       ::std::fmt::Debug::fmt)],
                                                      })),
    Some(&MessageItem::Array(ref items, Cow::Borrowed("s"))) =>
    ::std::fmt::format(::std::fmt::Arguments::new_v1({
                                                         static __STATIC_FMTSTR:
                                                                &'static [&'static str]
                                                                =
                                                             &["ARRAY  "];
                                                         __STATIC_FMTSTR
                                                     },
                                                     &match (&items,) {
                                                          (__arg0,) =>
                                                          [::std::fmt::ArgumentV1::new(__arg0,
                                                                                       ::std::fmt::Debug::fmt)],
                                                      })),
    Some(&MessageItem::Array(ref items, ref sig)) =>
    ::std::fmt::format(::std::fmt::Arguments::new_v1_formatted({
                                                                   static __STATIC_FMTSTR:
                                                                          &'static [&'static str]
                                                                          =
                                                                       &["",
                                                                         " "];
                                                                   __STATIC_FMTSTR
                                                               },
                                                               &match (&items,
                                                                       &sig) {
                                                                    (__argitems,
                                                                     __argsig)
                                                                    =>
                                                                    [::std::fmt::ArgumentV1::new(__argsig,
                                                                                                 ::std::fmt::Debug::fmt),
                                                                     ::std::fmt::ArgumentV1::new(__argitems,
                                                                                                 ::std::fmt::Debug::fmt)],
                                                                },
                                                               {
                                                                   static __STATIC_FMTARGS:
                                                                          &'static [::std::fmt::rt::v1::Argument]
                                                                          =
                                                                       &[::std::fmt::rt::v1::Argument{position:
                                                                                                          ::std::fmt::rt::v1::Position::At(0usize),
                                                                                                      format:
                                                                                                          ::std::fmt::rt::v1::FormatSpec{fill:
                                                                                                                                             ' ',
                                                                                                                                         align:
                                                                                                                                             ::std::fmt::rt::v1::Alignment::Unknown,
                                                                                                                                         flags:
                                                                                                                                             0u32,
                                                                                                                                         precision:
                                                                                                                                             ::std::fmt::rt::v1::Count::Implied,
                                                                                                                                         width:
                                                                                                                                             ::std::fmt::rt::v1::Count::Implied,},},
                                                                         ::std::fmt::rt::v1::Argument{position:
                                                                                                          ::std::fmt::rt::v1::Position::At(1usize),
                                                                                                      format:
                                                                                                          ::std::fmt::rt::v1::FormatSpec{fill:
                                                                                                                                             ' ',
                                                                                                                                         align:
                                                                                                                                             ::std::fmt::rt::v1::Alignment::Unknown,
                                                                                                                                         flags:
                                                                                                                                             0u32,
                                                                                                                                         precision:
                                                                                                                                             ::std::fmt::rt::v1::Count::Implied,
                                                                                                                                         width:
                                                                                                                                             ::std::fmt::rt::v1::Count::Implied,},}];
                                                                   __STATIC_FMTARGS
                                                               })),
    _ => "".to_owned(),
})), id: 92, rules: DefaultBlock, span: Span { lo: BytePos(20279), hi: BytePos(20703), expn_id: ExpnId(4294967295) } }), vis: Public, span: Span { lo: BytePos(20212), hi: BytePos(20703), expn_id: ExpnId(4294967295) } }
Item { ident: __STATIC_FMTSTR#15, attrs: [], id: 115, node: ItemStatic(type(&'static [&'static str]), MutImmutable, expr(122: &["DICT   "])), vis: Inherited, span: Span { lo: BytePos(20437), hi: BytePos(20450), expn_id: ExpnId(1) } }
Item { ident: __STATIC_FMTSTR#23, attrs: [], id: 152, node: ItemStatic(type(&'static [&'static str]), MutImmutable, expr(159: &["ARRAY  "])), vis: Inherited, span: Span { lo: BytePos(20536), hi: BytePos(20549), expn_id: ExpnId(3) } }
Item { ident: __STATIC_FMTSTR#32, attrs: [], id: 187, node: ItemStatic(type(&'static [&'static str]), MutImmutable, expr(194: &["", " "])), vis: Inherited, span: Span { lo: BytePos(20625), hi: BytePos(20644), expn_id: ExpnId(5) } }
Item { ident: __STATIC_FMTARGS#32, attrs: [], id: 221, node: ItemStatic(type(&'static [::std::fmt::rt::v1::Argument]), MutImmutable, expr(226: &[::std::fmt::rt::v1::Argument{position:
                                   ::std::fmt::rt::v1::Position::At(0usize),
                               format:
                                   ::std::fmt::rt::v1::FormatSpec{fill: ' ',
                                                                  align:
                                                                      ::std::fmt::rt::v1::Alignment::Unknown,
                                                                  flags: 0u32,
                                                                  precision:
                                                                      ::std::fmt::rt::v1::Count::Implied,
                                                                  width:
                                                                      ::std::fmt::rt::v1::Count::Implied,},},
  ::std::fmt::rt::v1::Argument{position:
                                   ::std::fmt::rt::v1::Position::At(1usize),
                               format:
                                   ::std::fmt::rt::v1::FormatSpec{fill: ' ',
                                                                  align:
                                                                      ::std::fmt::rt::v1::Alignment::Unknown,
                                                                  flags: 0u32,
                                                                  precision:
                                                                      ::std::fmt::rt::v1::Count::Implied,
                                                                  width:
                                                                      ::std::fmt::rt::v1::Count::Implied,},}])), vis: Inherited, span: Span { lo: BytePos(40666), hi: BytePos(40697), expn_id: ExpnId(5) } }
Item { ident: server#0, attrs: [Spanned { node: Attribute_ { id: AttrId(66), style: Inner, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("//! **Experimental** server taking the place of your Desktop Environments Notification Server.", CookedStr), span: Span { lo: BytePos(20706), hi: BytePos(20800), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(20706), hi: BytePos(20800), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(20706), hi: BytePos(20800), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(67), style: Inner, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("//!", CookedStr), span: Span { lo: BytePos(20801), hi: BytePos(20804), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(20801), hi: BytePos(20804), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(20801), hi: BytePos(20804), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(68), style: Inner, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("//! This is not nearly meant for anything but testing, as it only prints notifications to stdout.", CookedStr), span: Span { lo: BytePos(20805), hi: BytePos(20902), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(20805), hi: BytePos(20902), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(20805), hi: BytePos(20902), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(69), style: Inner, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("//! It does not respond properly either yet.", CookedStr), span: Span { lo: BytePos(20903), hi: BytePos(20947), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(20903), hi: BytePos(20947), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(20903), hi: BytePos(20947), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(70), style: Inner, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("//!", CookedStr), span: Span { lo: BytePos(20948), hi: BytePos(20951), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(20948), hi: BytePos(20951), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(20948), hi: BytePos(20951), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(71), style: Inner, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("//! This server will not replace an already running notification server.", CookedStr), span: Span { lo: BytePos(20952), hi: BytePos(21024), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(20952), hi: BytePos(21024), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(20952), hi: BytePos(21024), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(72), style: Inner, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("//!", CookedStr), span: Span { lo: BytePos(21025), hi: BytePos(21028), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(21025), hi: BytePos(21028), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(21025), hi: BytePos(21028), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(73), style: Inner, value: Spanned { node: MetaList("allow", [Spanned { node: MetaWord("missing_debug_implementations"), span: Span { lo: BytePos(21039), hi: BytePos(21068), expn_id: ExpnId(4294967295) } }]), span: Span { lo: BytePos(21033), hi: BytePos(21070), expn_id: ExpnId(4294967295) } }, is_sugared_doc: false }, span: Span { lo: BytePos(21030), hi: BytePos(21070), expn_id: ExpnId(4294967295) } }], id: 252, node: ItemMod(Mod { inner: Span { lo: BytePos(20706), hi: BytePos(28210), expn_id: ExpnId(4294967295) }, items: [Item { ident: #0, attrs: [Spanned { node: Attribute_ { id: AttrId(1247), style: Outer, value: Spanned { node: MetaWord("prelude_import"), span: Span { lo: BytePos(0), hi: BytePos(0), expn_id: ExpnId(216) } }, is_sugared_doc: false }, span: Span { lo: BytePos(0), hi: BytePos(0), expn_id: ExpnId(216) } }], id: 253, node: ItemUse(Spanned { node: ViewPathGlob(path(std::prelude::v1)), span: Span { lo: BytePos(0), hi: BytePos(0), expn_id: ExpnId(4294967295) } }), vis: Inherited, span: Span { lo: BytePos(0), hi: BytePos(0), expn_id: ExpnId(216) } }, Item { ident: dbus#0, attrs: [], id: 254, node: ItemExternCrate(None), vis: Inherited, span: Span { lo: BytePos(21071), hi: BytePos(21089), expn_id: ExpnId(4294967295) } }, Item { ident: #0, attrs: [], id: 255, node: ItemUse(Spanned { node: ViewPathSimple(HashSet#0, path(std::collections::HashSet)), span: Span { lo: BytePos(21095), hi: BytePos(21120), expn_id: ExpnId(4294967295) } }), vis: Inherited, span: Span { lo: BytePos(21091), hi: BytePos(21121), expn_id: ExpnId(4294967295) } }, Item { ident: #0, attrs: [], id: 256, node: ItemUse(Spanned { node: ViewPathSimple(Cell#0, path(std::cell::Cell)), span: Span { lo: BytePos(21126), hi: BytePos(21141), expn_id: ExpnId(4294967295) } }), vis: Inherited, span: Span { lo: BytePos(21122), hi: BytePos(21142), expn_id: ExpnId(4294967295) } }, Item { ident: #0, attrs: [], id: 257, node: ItemUse(Spanned { node: ViewPathList(path(dbus), [Spanned { node: PathListIdent { name: Connection#0, rename: None, id: 258 }, span: Span { lo: BytePos(21155), hi: BytePos(21165), expn_id: ExpnId(4294967295) } }, Spanned { node: PathListIdent { name: BusType#0, rename: None, id: 259 }, span: Span { lo: BytePos(21167), hi: BytePos(21174), expn_id: ExpnId(4294967295) } }, Spanned { node: PathListIdent { name: NameFlag#0, rename: None, id: 260 }, span: Span { lo: BytePos(21176), hi: BytePos(21184), expn_id: ExpnId(4294967295) } }, Spanned { node: PathListIdent { name: ConnectionItem#0, rename: None, id: 261 }, span: Span { lo: BytePos(21186), hi: BytePos(21200), expn_id: ExpnId(4294967295) } }, Spanned { node: PathListIdent { name: Message#0, rename: None, id: 262 }, span: Span { lo: BytePos(21202), hi: BytePos(21209), expn_id: ExpnId(4294967295) } }, Spanned { node: PathListIdent { name: MessageItem#0, rename: None, id: 263 }, span: Span { lo: BytePos(21211), hi: BytePos(21222), expn_id: ExpnId(4294967295) } }]), span: Span { lo: BytePos(21148), hi: BytePos(21224), expn_id: ExpnId(4294967295) } }), vis: Inherited, span: Span { lo: BytePos(21144), hi: BytePos(21224), expn_id: ExpnId(4294967295) } }, Item { ident: #0, attrs: [], id: 264, node: ItemUse(Spanned { node: ViewPathList(path(dbus::obj), [Spanned { node: PathListIdent { name: ObjectPath#0, rename: None, id: 265 }, span: Span { lo: BytePos(21241), hi: BytePos(21251), expn_id: ExpnId(4294967295) } }, Spanned { node: PathListIdent { name: Argument#0, rename: None, id: 266 }, span: Span { lo: BytePos(21253), hi: BytePos(21261), expn_id: ExpnId(4294967295) } }, Spanned { node: PathListIdent { name: Method#0, rename: None, id: 267 }, span: Span { lo: BytePos(21263), hi: BytePos(21269), expn_id: ExpnId(4294967295) } }, Spanned { node: PathListIdent { name: Interface#0, rename: None, id: 268 }, span: Span { lo: BytePos(21271), hi: BytePos(21280), expn_id: ExpnId(4294967295) } }]), span: Span { lo: BytePos(21229), hi: BytePos(21282), expn_id: ExpnId(4294967295) } }), vis: Inherited, span: Span { lo: BytePos(21225), hi: BytePos(21282), expn_id: ExpnId(4294967295) } }, Item { ident: #0, attrs: [], id: 269, node: ItemUse(Spanned { node: ViewPathList(path(super), [Spanned { node: PathListIdent { name: Notification#0, rename: None, id: 270 }, span: Span { lo: BytePos(21296), hi: BytePos(21308), expn_id: ExpnId(4294967295) } }, Spanned { node: PathListIdent { name: NotificationHint#0, rename: None, id: 271 }, span: Span { lo: BytePos(21309), hi: BytePos(21325), expn_id: ExpnId(4294967295) } }]), span: Span { lo: BytePos(21288), hi: BytePos(21327), expn_id: ExpnId(4294967295) } }), vis: Inherited, span: Span { lo: BytePos(21284), hi: BytePos(21327), expn_id: ExpnId(4294967295) } }, Item { ident: #0, attrs: [], id: 272, node: ItemUse(Spanned { node: ViewPathGlob(path(util)), span: Span { lo: BytePos(21332), hi: BytePos(21340), expn_id: ExpnId(4294967295) } }), vis: Inherited, span: Span { lo: BytePos(21328), hi: BytePos(21340), expn_id: ExpnId(4294967295) } }, Item { ident: DBUS_ERROR_FAILED#0, attrs: [], id: 273, node: ItemStatic(type(&'static str), MutImmutable, expr(277: "org.freedesktop.DBus.Error.Failed")), vis: Inherited, span: Span { lo: BytePos(21342), hi: BytePos(21419), expn_id: ExpnId(4294967295) } }, Item { ident: VERSION#0, attrs: [Spanned { node: Attribute_ { id: AttrId(74), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Version of the crate equals the version server.", CookedStr), span: Span { lo: BytePos(21420), hi: BytePos(21471), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(21420), hi: BytePos(21471), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(21420), hi: BytePos(21471), expn_id: ExpnId(4294967295) } }], id: 278, node: ItemConst(type(&'static str), expr(282: "3.0.3")), vis: Public, span: Span { lo: BytePos(21472), hi: BytePos(21532), expn_id: ExpnId(4294967295) } }, Item { ident: NotificationServer#0, attrs: [Spanned { node: Attribute_ { id: AttrId(75), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// An **experimental** notification server.", CookedStr), span: Span { lo: BytePos(21534), hi: BytePos(21578), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(21534), hi: BytePos(21578), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(21534), hi: BytePos(21578), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(76), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// See [the module level documentation](index.html) for more.", CookedStr), span: Span { lo: BytePos(21579), hi: BytePos(21641), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(21579), hi: BytePos(21641), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(21579), hi: BytePos(21641), expn_id: ExpnId(4294967295) } }], id: 283, node: ItemStruct(Struct([Spanned { node: StructField_ { kind: NamedField(counter#0, Public), id: 284, ty: type(Cell<u32>), attrs: [Spanned { node: Attribute_ { id: AttrId(77), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Counter for generating notification ids", CookedStr), span: Span { lo: BytePos(21678), hi: BytePos(21721), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(21678), hi: BytePos(21721), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(21678), hi: BytePos(21721), expn_id: ExpnId(4294967295) } }] }, span: Span { lo: BytePos(21726), hi: BytePos(21748), expn_id: ExpnId(4294967295) } }, Spanned { node: StructField_ { kind: NamedField(stop#0, Public), id: 287, ty: type(Cell<bool>), attrs: [Spanned { node: Attribute_ { id: AttrId(78), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// A flag that stops the server", CookedStr), span: Span { lo: BytePos(21754), hi: BytePos(21786), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(21754), hi: BytePos(21786), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(21754), hi: BytePos(21786), expn_id: ExpnId(4294967295) } }] }, span: Span { lo: BytePos(21791), hi: BytePos(21811), expn_id: ExpnId(4294967295) } }], 290), Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 291, predicates: [] } }), vis: Public, span: Span { lo: BytePos(21642), hi: BytePos(21813), expn_id: ExpnId(4294967295) } }, Item { ident: NotificationServer#0, attrs: [], id: 292, node: ItemImpl(Normal, "positive", Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 882, predicates: [] } }, None, type(NotificationServer), [ImplItem { id: 293, ident: count_up#0, vis: Inherited, attrs: [], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(296: self), id: 295 }], output: DefaultReturn(Span { lo: BytePos(21864), hi: BytePos(21864), expn_id: ExpnId(4294967295) }), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 294, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutImmutable, self#0), span: Span { lo: BytePos(21857), hi: BytePos(21865), expn_id: ExpnId(4294967295) } } }, Block { stmts: [stmt(299: self.counter.set(self.counter.get() + 1);)], expr: None, id: 298, rules: DefaultBlock, span: Span { lo: BytePos(21864), hi: BytePos(21922), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(21845), hi: BytePos(21922), expn_id: ExpnId(4294967295) } }, ImplItem { id: 308, ident: new#0, vis: Public, attrs: [Spanned { node: Attribute_ { id: AttrId(79), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Create a new `NotificationServer` instance.", CookedStr), span: Span { lo: BytePos(21928), hi: BytePos(21975), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(21928), hi: BytePos(21975), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(21928), hi: BytePos(21975), expn_id: ExpnId(4294967295) } }], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [], output: Return(type(NotificationServer)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 309, predicates: [] } }, explicit_self: Spanned { node: SelfStatic, span: Span { lo: BytePos(21991), hi: BytePos(21995), expn_id: ExpnId(4294967295) } } }, Block { stmts: [], expr: Some(expr(312: NotificationServer{counter: Cell::new(0), stop: Cell::new(false),})), id: 311, rules: DefaultBlock, span: Span { lo: BytePos(22015), hi: BytePos(22094), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(21980), hi: BytePos(22094), expn_id: ExpnId(4294967295) } }, ImplItem { id: 319, ident: start#0, vis: Public, attrs: [Spanned { node: Attribute_ { id: AttrId(80), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Start listening for incoming notifications", CookedStr), span: Span { lo: BytePos(22249), hi: BytePos(22295), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(22249), hi: BytePos(22295), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(22249), hi: BytePos(22295), expn_id: ExpnId(4294967295) } }], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(327: self), id: 326 }, Arg { ty: type(F), pat: pat(330: closure), id: 329 }], output: DefaultReturn(Span { lo: BytePos(22339), hi: BytePos(22339), expn_id: ExpnId(4294967295) }), variadic: false }, generics: Generics { lifetimes: [], ty_params: [TyParam { ident: F#0, id: 320, bounds: [], default: None, span: Span { lo: BytePos(22313), hi: BytePos(22314), expn_id: ExpnId(4294967295) } }], where_clause: WhereClause { id: 321, predicates: [BoundPredicate(WhereBoundPredicate { span: Span { lo: BytePos(22345), hi: BytePos(22365), expn_id: ExpnId(4294967295) }, bound_lifetimes: [], bounded_ty: type(F), bounds: [TraitTyParamBound(PolyTraitRef { bound_lifetimes: [], trait_ref: TraitRef { path: path(Fn(&Notification)), ref_id: 323 }, span: Span { lo: BytePos(22348), hi: BytePos(22365), expn_id: ExpnId(4294967295) } }, None)] })] } }, explicit_self: Spanned { node: SelfRegion(None, MutMutable, self#0), span: Span { lo: BytePos(22316), hi: BytePos(22344), expn_id: ExpnId(4294967295) } } }, Block { stmts: [stmt(333: let connection = Connection::get_private(BusType::Session).unwrap();), stmt(340: connection.release_name("org.freedesktop.Notifications").unwrap();), stmt(345: connection.register_name("org.freedesktop.Notifications",
                         NameFlag::ReplaceExisting as
                             u32).ok().expect("Was not able to register name.");), stmt(355: let mut objpath =
    ObjectPath::new(&connection, "/org/freedesktop/Notifications", false);), stmt(364: connection.register_object_path("/org/freedesktop/Notifications").ok().expect("could not register object path");), stmt(371: let server_interface =
    Interface::new(<[_]>::into_vec(::std::boxed::Box::new([Method::new("Notify",
                                                                       <[_]>::into_vec(::std::boxed::Box::new([Argument::new("app_name",
                                                                                                                             "s"),
                                                                                                               Argument::new("replaces_id",
                                                                                                                             "u"),
                                                                                                               Argument::new("app_icon",
                                                                                                                             "s"),
                                                                                                               Argument::new("summary",
                                                                                                                             "s"),
                                                                                                               Argument::new("body",
                                                                                                                             "s"),
                                                                                                               Argument::new("actions",
                                                                                                                             "as"),
                                                                                                               Argument::new("hints",
                                                                                                                             "a{sv}"),
                                                                                                               Argument::new("timeout",
                                                                                                                             "i")])),
                                                                       <[_]>::into_vec(::std::boxed::Box::new([Argument::new("arg_0",
                                                                                                                             "u")])),
                                                                       Box::new(|msg|
                                                                                    {
                                                                                let hint_items =
                                                                                    msg.get_items().get(6).unwrap().clone();
                                                                                let hint_items:
                                                                                        &Vec<MessageItem> =
                                                                                    hint_items.inner().unwrap();
                                                                                let hints =
                                                                                    hint_items.iter().map(|item|
                                                                                                              item.into()).collect::<HashSet<NotificationHint>>();
                                                                                let action_items =
                                                                                    msg.get_items().get(5).unwrap().clone();
                                                                                let action_items:
                                                                                        &Vec<MessageItem> =
                                                                                    action_items.inner().unwrap();
                                                                                let actions:
                                                                                        Vec<String> =
                                                                                    action_items.iter().map(|action|
                                                                                                                action.inner::<&String>().unwrap().to_owned()).collect();
                                                                                let notification =
                                                                                    Notification{appname:
                                                                                                     unwrap_message_str(msg.get_items().get(0).unwrap()),
                                                                                                 summary:
                                                                                                     unwrap_message_string(msg.get_items().get(3)),
                                                                                                 body:
                                                                                                     unwrap_message_string(msg.get_items().get(4)),
                                                                                                 icon:
                                                                                                     unwrap_message_string(msg.get_items().get(2)),
                                                                                                 timeout:
                                                                                                     msg.get_items().get(7).unwrap().inner().unwrap(),
                                                                                                 hints:
                                                                                                     hints,
                                                                                                 actions:
                                                                                                     actions,
                                                                                                 id:
                                                                                                     Some(self.counter.get()),};
                                                                                closure(&notification);
                                                                                self.count_up();
                                                                                Ok(<[_]>::into_vec(::std::boxed::Box::new([MessageItem::Int32(42)])))
                                                                            })),
                                                           Method::new("CloseNotification",
                                                                       <[_]>::into_vec(::std::boxed::Box::new([Argument::new("id",
                                                                                                                             "u")])),
                                                                       <[_]>::into_vec(::std::boxed::Box::new([])),
                                                                       Box::new(|_msg|
                                                                                    {
                                                                                ::std::io::_print(::std::fmt::Arguments::new_v1({
                                                                                                                                    static __STATIC_FMTSTR:
                                                                                                                                           &'static [&'static str]
                                                                                                                                           =
                                                                                                                                        &["",
                                                                                                                                          "\n"];
                                                                                                                                    __STATIC_FMTSTR
                                                                                                                                },
                                                                                                                                &match (&_msg,)
                                                                                                                                     {
                                                                                                                                     (__arg0,)
                                                                                                                                     =>
                                                                                                                                     [::std::fmt::ArgumentV1::new(__arg0,
                                                                                                                                                                  ::std::fmt::Debug::fmt)],
                                                                                                                                 }));
                                                                                Ok(<[_]>::into_vec(::std::boxed::Box::new([])))
                                                                            })),
                                                           Method::new("Stop",
                                                                       <[_]>::into_vec(::std::boxed::Box::new([])),
                                                                       <[_]>::into_vec(::std::boxed::Box::new([])),
                                                                       Box::new(|_msg|
                                                                                    {
                                                                                self.stop.set(true);
                                                                                Ok(<[_]>::into_vec(::std::boxed::Box::new([])))
                                                                            })),
                                                           Method::new("GetCapabilities",
                                                                       <[_]>::into_vec(::std::boxed::Box::new([])),
                                                                       <[_]>::into_vec(::std::boxed::Box::new([Argument::new("caps",
                                                                                                                             "{s}")])),
                                                                       Box::new(|_msg|
                                                                                    Ok(<[_]>::into_vec(::std::boxed::Box::new([MessageItem::new_array(<[_]>::into_vec(::std::boxed::Box::new(["body".into()]))).unwrap()]))))),
                                                           Method::new("GetServerInformation",
                                                                       <[_]>::into_vec(::std::boxed::Box::new([])),
                                                                       <[_]>::into_vec(::std::boxed::Box::new([Argument::new("name",
                                                                                                                             "s"),
                                                                                                               Argument::new("vendor",
                                                                                                                             "s"),
                                                                                                               Argument::new("version",
                                                                                                                             "s"),
                                                                                                               Argument::new("spec_version",
                                                                                                                             "s")])),
                                                                       Box::new(|_msg|
                                                                                    Ok(<[_]>::into_vec(::std::boxed::Box::new(["notify-rust daemon".into(),
                                                                                                                               "notify-rust".into(),
                                                                                                                               VERSION.into(),
                                                                                                                               "1.1".into()])))))])),
                   <[_]>::into_vec(::std::boxed::Box::new([])),
                   <[_]>::into_vec(::std::boxed::Box::new([])));), stmt(811: objpath.insert_interface("org.freedesktop.Notifications", server_interface);)], expr: Some(expr(816: for n in connection.iter(10) {
    match n {
        ConnectionItem::MethodCall(mut m) =>
        if objpath.handle_message(&mut m).is_none() {
            connection.send(Message::new_error(&m, DBUS_ERROR_FAILED,
                                               "Object path not found").unwrap()).unwrap();
        },
        ConnectionItem::Signal(_m) => { }
        _ => (),
    }
    if self.stop.get() {
        ::std::io::_print(::std::fmt::Arguments::new_v1({
                                                            static __STATIC_FMTSTR:
                                                                   &'static [&'static str]
                                                                   =
                                                                &["stopping server\n"];
                                                            __STATIC_FMTSTR
                                                        },
                                                        &match () {
                                                             () => [],
                                                         }));
        break ;
    }
})), id: 332, rules: DefaultBlock, span: Span { lo: BytePos(22366), hi: BytePos(28208), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(22300), hi: BytePos(28208), expn_id: ExpnId(4294967295) } }]), vis: Inherited, span: Span { lo: BytePos(21815), hi: BytePos(28210), expn_id: ExpnId(4294967295) } }] }), vis: Public, span: Span { lo: BytePos(2772), hi: BytePos(2787), expn_id: ExpnId(4294967295) } }
Item { ident: #0, attrs: [Spanned { node: Attribute_ { id: AttrId(1247), style: Outer, value: Spanned { node: MetaWord("prelude_import"), span: Span { lo: BytePos(0), hi: BytePos(0), expn_id: ExpnId(216) } }, is_sugared_doc: false }, span: Span { lo: BytePos(0), hi: BytePos(0), expn_id: ExpnId(216) } }], id: 253, node: ItemUse(Spanned { node: ViewPathGlob(path(std::prelude::v1)), span: Span { lo: BytePos(0), hi: BytePos(0), expn_id: ExpnId(4294967295) } }), vis: Inherited, span: Span { lo: BytePos(0), hi: BytePos(0), expn_id: ExpnId(216) } }
Item { ident: dbus#0, attrs: [], id: 254, node: ItemExternCrate(None), vis: Inherited, span: Span { lo: BytePos(21071), hi: BytePos(21089), expn_id: ExpnId(4294967295) } }
Item { ident: #0, attrs: [], id: 255, node: ItemUse(Spanned { node: ViewPathSimple(HashSet#0, path(std::collections::HashSet)), span: Span { lo: BytePos(21095), hi: BytePos(21120), expn_id: ExpnId(4294967295) } }), vis: Inherited, span: Span { lo: BytePos(21091), hi: BytePos(21121), expn_id: ExpnId(4294967295) } }
Item { ident: #0, attrs: [], id: 256, node: ItemUse(Spanned { node: ViewPathSimple(Cell#0, path(std::cell::Cell)), span: Span { lo: BytePos(21126), hi: BytePos(21141), expn_id: ExpnId(4294967295) } }), vis: Inherited, span: Span { lo: BytePos(21122), hi: BytePos(21142), expn_id: ExpnId(4294967295) } }
Item { ident: #0, attrs: [], id: 257, node: ItemUse(Spanned { node: ViewPathList(path(dbus), [Spanned { node: PathListIdent { name: Connection#0, rename: None, id: 258 }, span: Span { lo: BytePos(21155), hi: BytePos(21165), expn_id: ExpnId(4294967295) } }, Spanned { node: PathListIdent { name: BusType#0, rename: None, id: 259 }, span: Span { lo: BytePos(21167), hi: BytePos(21174), expn_id: ExpnId(4294967295) } }, Spanned { node: PathListIdent { name: NameFlag#0, rename: None, id: 260 }, span: Span { lo: BytePos(21176), hi: BytePos(21184), expn_id: ExpnId(4294967295) } }, Spanned { node: PathListIdent { name: ConnectionItem#0, rename: None, id: 261 }, span: Span { lo: BytePos(21186), hi: BytePos(21200), expn_id: ExpnId(4294967295) } }, Spanned { node: PathListIdent { name: Message#0, rename: None, id: 262 }, span: Span { lo: BytePos(21202), hi: BytePos(21209), expn_id: ExpnId(4294967295) } }, Spanned { node: PathListIdent { name: MessageItem#0, rename: None, id: 263 }, span: Span { lo: BytePos(21211), hi: BytePos(21222), expn_id: ExpnId(4294967295) } }]), span: Span { lo: BytePos(21148), hi: BytePos(21224), expn_id: ExpnId(4294967295) } }), vis: Inherited, span: Span { lo: BytePos(21144), hi: BytePos(21224), expn_id: ExpnId(4294967295) } }
Item { ident: #0, attrs: [], id: 264, node: ItemUse(Spanned { node: ViewPathList(path(dbus::obj), [Spanned { node: PathListIdent { name: ObjectPath#0, rename: None, id: 265 }, span: Span { lo: BytePos(21241), hi: BytePos(21251), expn_id: ExpnId(4294967295) } }, Spanned { node: PathListIdent { name: Argument#0, rename: None, id: 266 }, span: Span { lo: BytePos(21253), hi: BytePos(21261), expn_id: ExpnId(4294967295) } }, Spanned { node: PathListIdent { name: Method#0, rename: None, id: 267 }, span: Span { lo: BytePos(21263), hi: BytePos(21269), expn_id: ExpnId(4294967295) } }, Spanned { node: PathListIdent { name: Interface#0, rename: None, id: 268 }, span: Span { lo: BytePos(21271), hi: BytePos(21280), expn_id: ExpnId(4294967295) } }]), span: Span { lo: BytePos(21229), hi: BytePos(21282), expn_id: ExpnId(4294967295) } }), vis: Inherited, span: Span { lo: BytePos(21225), hi: BytePos(21282), expn_id: ExpnId(4294967295) } }
Item { ident: #0, attrs: [], id: 269, node: ItemUse(Spanned { node: ViewPathList(path(super), [Spanned { node: PathListIdent { name: Notification#0, rename: None, id: 270 }, span: Span { lo: BytePos(21296), hi: BytePos(21308), expn_id: ExpnId(4294967295) } }, Spanned { node: PathListIdent { name: NotificationHint#0, rename: None, id: 271 }, span: Span { lo: BytePos(21309), hi: BytePos(21325), expn_id: ExpnId(4294967295) } }]), span: Span { lo: BytePos(21288), hi: BytePos(21327), expn_id: ExpnId(4294967295) } }), vis: Inherited, span: Span { lo: BytePos(21284), hi: BytePos(21327), expn_id: ExpnId(4294967295) } }
Item { ident: #0, attrs: [], id: 272, node: ItemUse(Spanned { node: ViewPathGlob(path(util)), span: Span { lo: BytePos(21332), hi: BytePos(21340), expn_id: ExpnId(4294967295) } }), vis: Inherited, span: Span { lo: BytePos(21328), hi: BytePos(21340), expn_id: ExpnId(4294967295) } }
Item { ident: DBUS_ERROR_FAILED#0, attrs: [], id: 273, node: ItemStatic(type(&'static str), MutImmutable, expr(277: "org.freedesktop.DBus.Error.Failed")), vis: Inherited, span: Span { lo: BytePos(21342), hi: BytePos(21419), expn_id: ExpnId(4294967295) } }
Item { ident: VERSION#0, attrs: [Spanned { node: Attribute_ { id: AttrId(74), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Version of the crate equals the version server.", CookedStr), span: Span { lo: BytePos(21420), hi: BytePos(21471), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(21420), hi: BytePos(21471), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(21420), hi: BytePos(21471), expn_id: ExpnId(4294967295) } }], id: 278, node: ItemConst(type(&'static str), expr(282: "3.0.3")), vis: Public, span: Span { lo: BytePos(21472), hi: BytePos(21532), expn_id: ExpnId(4294967295) } }
Item { ident: NotificationServer#0, attrs: [Spanned { node: Attribute_ { id: AttrId(75), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// An **experimental** notification server.", CookedStr), span: Span { lo: BytePos(21534), hi: BytePos(21578), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(21534), hi: BytePos(21578), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(21534), hi: BytePos(21578), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(76), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// See [the module level documentation](index.html) for more.", CookedStr), span: Span { lo: BytePos(21579), hi: BytePos(21641), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(21579), hi: BytePos(21641), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(21579), hi: BytePos(21641), expn_id: ExpnId(4294967295) } }], id: 283, node: ItemStruct(Struct([Spanned { node: StructField_ { kind: NamedField(counter#0, Public), id: 284, ty: type(Cell<u32>), attrs: [Spanned { node: Attribute_ { id: AttrId(77), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Counter for generating notification ids", CookedStr), span: Span { lo: BytePos(21678), hi: BytePos(21721), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(21678), hi: BytePos(21721), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(21678), hi: BytePos(21721), expn_id: ExpnId(4294967295) } }] }, span: Span { lo: BytePos(21726), hi: BytePos(21748), expn_id: ExpnId(4294967295) } }, Spanned { node: StructField_ { kind: NamedField(stop#0, Public), id: 287, ty: type(Cell<bool>), attrs: [Spanned { node: Attribute_ { id: AttrId(78), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// A flag that stops the server", CookedStr), span: Span { lo: BytePos(21754), hi: BytePos(21786), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(21754), hi: BytePos(21786), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(21754), hi: BytePos(21786), expn_id: ExpnId(4294967295) } }] }, span: Span { lo: BytePos(21791), hi: BytePos(21811), expn_id: ExpnId(4294967295) } }], 290), Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 291, predicates: [] } }), vis: Public, span: Span { lo: BytePos(21642), hi: BytePos(21813), expn_id: ExpnId(4294967295) } }
Item { ident: NotificationServer#0, attrs: [], id: 292, node: ItemImpl(Normal, "positive", Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 882, predicates: [] } }, None, type(NotificationServer), [ImplItem { id: 293, ident: count_up#0, vis: Inherited, attrs: [], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(296: self), id: 295 }], output: DefaultReturn(Span { lo: BytePos(21864), hi: BytePos(21864), expn_id: ExpnId(4294967295) }), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 294, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutImmutable, self#0), span: Span { lo: BytePos(21857), hi: BytePos(21865), expn_id: ExpnId(4294967295) } } }, Block { stmts: [stmt(299: self.counter.set(self.counter.get() + 1);)], expr: None, id: 298, rules: DefaultBlock, span: Span { lo: BytePos(21864), hi: BytePos(21922), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(21845), hi: BytePos(21922), expn_id: ExpnId(4294967295) } }, ImplItem { id: 308, ident: new#0, vis: Public, attrs: [Spanned { node: Attribute_ { id: AttrId(79), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Create a new `NotificationServer` instance.", CookedStr), span: Span { lo: BytePos(21928), hi: BytePos(21975), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(21928), hi: BytePos(21975), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(21928), hi: BytePos(21975), expn_id: ExpnId(4294967295) } }], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [], output: Return(type(NotificationServer)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 309, predicates: [] } }, explicit_self: Spanned { node: SelfStatic, span: Span { lo: BytePos(21991), hi: BytePos(21995), expn_id: ExpnId(4294967295) } } }, Block { stmts: [], expr: Some(expr(312: NotificationServer{counter: Cell::new(0), stop: Cell::new(false),})), id: 311, rules: DefaultBlock, span: Span { lo: BytePos(22015), hi: BytePos(22094), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(21980), hi: BytePos(22094), expn_id: ExpnId(4294967295) } }, ImplItem { id: 319, ident: start#0, vis: Public, attrs: [Spanned { node: Attribute_ { id: AttrId(80), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Start listening for incoming notifications", CookedStr), span: Span { lo: BytePos(22249), hi: BytePos(22295), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(22249), hi: BytePos(22295), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(22249), hi: BytePos(22295), expn_id: ExpnId(4294967295) } }], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(327: self), id: 326 }, Arg { ty: type(F), pat: pat(330: closure), id: 329 }], output: DefaultReturn(Span { lo: BytePos(22339), hi: BytePos(22339), expn_id: ExpnId(4294967295) }), variadic: false }, generics: Generics { lifetimes: [], ty_params: [TyParam { ident: F#0, id: 320, bounds: [], default: None, span: Span { lo: BytePos(22313), hi: BytePos(22314), expn_id: ExpnId(4294967295) } }], where_clause: WhereClause { id: 321, predicates: [BoundPredicate(WhereBoundPredicate { span: Span { lo: BytePos(22345), hi: BytePos(22365), expn_id: ExpnId(4294967295) }, bound_lifetimes: [], bounded_ty: type(F), bounds: [TraitTyParamBound(PolyTraitRef { bound_lifetimes: [], trait_ref: TraitRef { path: path(Fn(&Notification)), ref_id: 323 }, span: Span { lo: BytePos(22348), hi: BytePos(22365), expn_id: ExpnId(4294967295) } }, None)] })] } }, explicit_self: Spanned { node: SelfRegion(None, MutMutable, self#0), span: Span { lo: BytePos(22316), hi: BytePos(22344), expn_id: ExpnId(4294967295) } } }, Block { stmts: [stmt(333: let connection = Connection::get_private(BusType::Session).unwrap();), stmt(340: connection.release_name("org.freedesktop.Notifications").unwrap();), stmt(345: connection.register_name("org.freedesktop.Notifications",
                         NameFlag::ReplaceExisting as
                             u32).ok().expect("Was not able to register name.");), stmt(355: let mut objpath =
    ObjectPath::new(&connection, "/org/freedesktop/Notifications", false);), stmt(364: connection.register_object_path("/org/freedesktop/Notifications").ok().expect("could not register object path");), stmt(371: let server_interface =
    Interface::new(<[_]>::into_vec(::std::boxed::Box::new([Method::new("Notify",
                                                                       <[_]>::into_vec(::std::boxed::Box::new([Argument::new("app_name",
                                                                                                                             "s"),
                                                                                                               Argument::new("replaces_id",
                                                                                                                             "u"),
                                                                                                               Argument::new("app_icon",
                                                                                                                             "s"),
                                                                                                               Argument::new("summary",
                                                                                                                             "s"),
                                                                                                               Argument::new("body",
                                                                                                                             "s"),
                                                                                                               Argument::new("actions",
                                                                                                                             "as"),
                                                                                                               Argument::new("hints",
                                                                                                                             "a{sv}"),
                                                                                                               Argument::new("timeout",
                                                                                                                             "i")])),
                                                                       <[_]>::into_vec(::std::boxed::Box::new([Argument::new("arg_0",
                                                                                                                             "u")])),
                                                                       Box::new(|msg|
                                                                                    {
                                                                                let hint_items =
                                                                                    msg.get_items().get(6).unwrap().clone();
                                                                                let hint_items:
                                                                                        &Vec<MessageItem> =
                                                                                    hint_items.inner().unwrap();
                                                                                let hints =
                                                                                    hint_items.iter().map(|item|
                                                                                                              item.into()).collect::<HashSet<NotificationHint>>();
                                                                                let action_items =
                                                                                    msg.get_items().get(5).unwrap().clone();
                                                                                let action_items:
                                                                                        &Vec<MessageItem> =
                                                                                    action_items.inner().unwrap();
                                                                                let actions:
                                                                                        Vec<String> =
                                                                                    action_items.iter().map(|action|
                                                                                                                action.inner::<&String>().unwrap().to_owned()).collect();
                                                                                let notification =
                                                                                    Notification{appname:
                                                                                                     unwrap_message_str(msg.get_items().get(0).unwrap()),
                                                                                                 summary:
                                                                                                     unwrap_message_string(msg.get_items().get(3)),
                                                                                                 body:
                                                                                                     unwrap_message_string(msg.get_items().get(4)),
                                                                                                 icon:
                                                                                                     unwrap_message_string(msg.get_items().get(2)),
                                                                                                 timeout:
                                                                                                     msg.get_items().get(7).unwrap().inner().unwrap(),
                                                                                                 hints:
                                                                                                     hints,
                                                                                                 actions:
                                                                                                     actions,
                                                                                                 id:
                                                                                                     Some(self.counter.get()),};
                                                                                closure(&notification);
                                                                                self.count_up();
                                                                                Ok(<[_]>::into_vec(::std::boxed::Box::new([MessageItem::Int32(42)])))
                                                                            })),
                                                           Method::new("CloseNotification",
                                                                       <[_]>::into_vec(::std::boxed::Box::new([Argument::new("id",
                                                                                                                             "u")])),
                                                                       <[_]>::into_vec(::std::boxed::Box::new([])),
                                                                       Box::new(|_msg|
                                                                                    {
                                                                                ::std::io::_print(::std::fmt::Arguments::new_v1({
                                                                                                                                    static __STATIC_FMTSTR:
                                                                                                                                           &'static [&'static str]
                                                                                                                                           =
                                                                                                                                        &["",
                                                                                                                                          "\n"];
                                                                                                                                    __STATIC_FMTSTR
                                                                                                                                },
                                                                                                                                &match (&_msg,)
                                                                                                                                     {
                                                                                                                                     (__arg0,)
                                                                                                                                     =>
                                                                                                                                     [::std::fmt::ArgumentV1::new(__arg0,
                                                                                                                                                                  ::std::fmt::Debug::fmt)],
                                                                                                                                 }));
                                                                                Ok(<[_]>::into_vec(::std::boxed::Box::new([])))
                                                                            })),
                                                           Method::new("Stop",
                                                                       <[_]>::into_vec(::std::boxed::Box::new([])),
                                                                       <[_]>::into_vec(::std::boxed::Box::new([])),
                                                                       Box::new(|_msg|
                                                                                    {
                                                                                self.stop.set(true);
                                                                                Ok(<[_]>::into_vec(::std::boxed::Box::new([])))
                                                                            })),
                                                           Method::new("GetCapabilities",
                                                                       <[_]>::into_vec(::std::boxed::Box::new([])),
                                                                       <[_]>::into_vec(::std::boxed::Box::new([Argument::new("caps",
                                                                                                                             "{s}")])),
                                                                       Box::new(|_msg|
                                                                                    Ok(<[_]>::into_vec(::std::boxed::Box::new([MessageItem::new_array(<[_]>::into_vec(::std::boxed::Box::new(["body".into()]))).unwrap()]))))),
                                                           Method::new("GetServerInformation",
                                                                       <[_]>::into_vec(::std::boxed::Box::new([])),
                                                                       <[_]>::into_vec(::std::boxed::Box::new([Argument::new("name",
                                                                                                                             "s"),
                                                                                                               Argument::new("vendor",
                                                                                                                             "s"),
                                                                                                               Argument::new("version",
                                                                                                                             "s"),
                                                                                                               Argument::new("spec_version",
                                                                                                                             "s")])),
                                                                       Box::new(|_msg|
                                                                                    Ok(<[_]>::into_vec(::std::boxed::Box::new(["notify-rust daemon".into(),
                                                                                                                               "notify-rust".into(),
                                                                                                                               VERSION.into(),
                                                                                                                               "1.1".into()])))))])),
                   <[_]>::into_vec(::std::boxed::Box::new([])),
                   <[_]>::into_vec(::std::boxed::Box::new([])));), stmt(811: objpath.insert_interface("org.freedesktop.Notifications", server_interface);)], expr: Some(expr(816: for n in connection.iter(10) {
    match n {
        ConnectionItem::MethodCall(mut m) =>
        if objpath.handle_message(&mut m).is_none() {
            connection.send(Message::new_error(&m, DBUS_ERROR_FAILED,
                                               "Object path not found").unwrap()).unwrap();
        },
        ConnectionItem::Signal(_m) => { }
        _ => (),
    }
    if self.stop.get() {
        ::std::io::_print(::std::fmt::Arguments::new_v1({
                                                            static __STATIC_FMTSTR:
                                                                   &'static [&'static str]
                                                                   =
                                                                &["stopping server\n"];
                                                            __STATIC_FMTSTR
                                                        },
                                                        &match () {
                                                             () => [],
                                                         }));
        break ;
    }
})), id: 332, rules: DefaultBlock, span: Span { lo: BytePos(22366), hi: BytePos(28208), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(22300), hi: BytePos(28208), expn_id: ExpnId(4294967295) } }]), vis: Inherited, span: Span { lo: BytePos(21815), hi: BytePos(28210), expn_id: ExpnId(4294967295) } }
Item { ident: __STATIC_FMTSTR#79, attrs: [], id: 618, node: ItemStatic(type(&'static [&'static str]), MutImmutable, expr(625: &["", "\n"])), vis: Inherited, span: Span { lo: BytePos(41345), hi: BytePos(41370), expn_id: ExpnId(15) } }
Item { ident: __STATIC_FMTSTR#122, attrs: [], id: 864, node: ItemStatic(type(&'static [&'static str]), MutImmutable, expr(871: &["stopping server\n"])), vis: Inherited, span: Span { lo: BytePos(41260), hi: BytePos(41285), expn_id: ExpnId(34) } }
Item { ident: hints#0, attrs: [Spanned { node: Attribute_ { id: AttrId(81), style: Inner, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("//! NotificationHints allow to pass extra information to the server.", CookedStr), span: Span { lo: BytePos(28212), hi: BytePos(28280), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(28212), hi: BytePos(28280), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(28212), hi: BytePos(28280), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(82), style: Inner, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("//!", CookedStr), span: Span { lo: BytePos(28281), hi: BytePos(28284), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(28281), hi: BytePos(28284), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(28281), hi: BytePos(28284), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(83), style: Inner, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("//! Many of these are standardized by either:", CookedStr), span: Span { lo: BytePos(28285), hi: BytePos(28330), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(28285), hi: BytePos(28330), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(28285), hi: BytePos(28330), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(84), style: Inner, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("//!", CookedStr), span: Span { lo: BytePos(28331), hi: BytePos(28334), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(28331), hi: BytePos(28334), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(28331), hi: BytePos(28334), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(85), style: Inner, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("//! * http://www.galago-project.org/specs/notification/0.9/x344.html", CookedStr), span: Span { lo: BytePos(28335), hi: BytePos(28403), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(28335), hi: BytePos(28403), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(28335), hi: BytePos(28403), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(86), style: Inner, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("//! * https://developer.gnome.org/notification-spec/#hints", CookedStr), span: Span { lo: BytePos(28404), hi: BytePos(28462), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(28404), hi: BytePos(28462), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(28404), hi: BytePos(28462), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(87), style: Inner, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("//!", CookedStr), span: Span { lo: BytePos(28463), hi: BytePos(28466), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(28463), hi: BytePos(28466), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(28463), hi: BytePos(28466), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(88), style: Inner, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("//! Which of these are actually implemented depends strongly on the Notification server you talk to.", CookedStr), span: Span { lo: BytePos(28467), hi: BytePos(28567), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(28467), hi: BytePos(28567), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(28467), hi: BytePos(28567), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(89), style: Inner, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("//! Usually the `get_capabilities()` gives some clues, but the standards usually mention much more", CookedStr), span: Span { lo: BytePos(28568), hi: BytePos(28666), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(28568), hi: BytePos(28666), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(28568), hi: BytePos(28666), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(90), style: Inner, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("//! than is actually available.", CookedStr), span: Span { lo: BytePos(28667), hi: BytePos(28698), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(28667), hi: BytePos(28698), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(28667), hi: BytePos(28698), expn_id: ExpnId(4294967295) } }], id: 884, node: ItemMod(Mod { inner: Span { lo: BytePos(28212), hi: BytePos(38822), expn_id: ExpnId(4294967295) }, items: [Item { ident: #0, attrs: [Spanned { node: Attribute_ { id: AttrId(1248), style: Outer, value: Spanned { node: MetaWord("prelude_import"), span: Span { lo: BytePos(0), hi: BytePos(0), expn_id: ExpnId(216) } }, is_sugared_doc: false }, span: Span { lo: BytePos(0), hi: BytePos(0), expn_id: ExpnId(216) } }], id: 885, node: ItemUse(Spanned { node: ViewPathGlob(path(std::prelude::v1)), span: Span { lo: BytePos(0), hi: BytePos(0), expn_id: ExpnId(4294967295) } }), vis: Inherited, span: Span { lo: BytePos(0), hi: BytePos(0), expn_id: ExpnId(216) } }, Item { ident: #0, attrs: [], id: 886, node: ItemUse(Spanned { node: ViewPathSimple(MessageItem#0, path(dbus::MessageItem)), span: Span { lo: BytePos(28705), hi: BytePos(28722), expn_id: ExpnId(4294967295) } }), vis: Inherited, span: Span { lo: BytePos(28701), hi: BytePos(28723), expn_id: ExpnId(4294967295) } }, Item { ident: #0, attrs: [], id: 887, node: ItemUse(Spanned { node: ViewPathSimple(NotificationUrgency#0, path(super::NotificationUrgency)), span: Span { lo: BytePos(28728), hi: BytePos(28754), expn_id: ExpnId(4294967295) } }), vis: Inherited, span: Span { lo: BytePos(28724), hi: BytePos(28755), expn_id: ExpnId(4294967295) } }, Item { ident: #0, attrs: [], id: 888, node: ItemUse(Spanned { node: ViewPathGlob(path(util)), span: Span { lo: BytePos(28760), hi: BytePos(28768), expn_id: ExpnId(4294967295) } }), vis: Inherited, span: Span { lo: BytePos(28756), hi: BytePos(28768), expn_id: ExpnId(4294967295) } }, Item { ident: ACTION_ICONS#0, attrs: [], id: 889, node: ItemConst(type(&'static str), expr(893: "action-icons")), vis: Inherited, span: Span { lo: BytePos(28770), hi: BytePos(28821), expn_id: ExpnId(4294967295) } }, Item { ident: CATEGORY#0, attrs: [], id: 894, node: ItemConst(type(&'static str), expr(898: "category")), vis: Inherited, span: Span { lo: BytePos(28822), hi: BytePos(28869), expn_id: ExpnId(4294967295) } }, Item { ident: DESKTOP_ENTRY#0, attrs: [], id: 899, node: ItemConst(type(&'static str), expr(903: "desktop-entry")), vis: Inherited, span: Span { lo: BytePos(28870), hi: BytePos(28922), expn_id: ExpnId(4294967295) } }, Item { ident: IMAGE_PATH#0, attrs: [], id: 904, node: ItemConst(type(&'static str), expr(908: "image-path")), vis: Inherited, span: Span { lo: BytePos(28973), hi: BytePos(29022), expn_id: ExpnId(4294967295) } }, Item { ident: RESIDENT#0, attrs: [], id: 909, node: ItemConst(type(&'static str), expr(913: "resident")), vis: Inherited, span: Span { lo: BytePos(29072), hi: BytePos(29119), expn_id: ExpnId(4294967295) } }, Item { ident: SOUND_FILE#0, attrs: [], id: 914, node: ItemConst(type(&'static str), expr(918: "sound-file")), vis: Inherited, span: Span { lo: BytePos(29120), hi: BytePos(29169), expn_id: ExpnId(4294967295) } }, Item { ident: SOUND_NAME#0, attrs: [], id: 919, node: ItemConst(type(&'static str), expr(923: "sound-name")), vis: Inherited, span: Span { lo: BytePos(29170), hi: BytePos(29219), expn_id: ExpnId(4294967295) } }, Item { ident: SUPPRESS_SOUND#0, attrs: [], id: 924, node: ItemConst(type(&'static str), expr(928: "suppress-sound")), vis: Inherited, span: Span { lo: BytePos(29220), hi: BytePos(29273), expn_id: ExpnId(4294967295) } }, Item { ident: TRANSIENT#0, attrs: [], id: 929, node: ItemConst(type(&'static str), expr(933: "transient")), vis: Inherited, span: Span { lo: BytePos(29274), hi: BytePos(29322), expn_id: ExpnId(4294967295) } }, Item { ident: X#0, attrs: [], id: 934, node: ItemConst(type(&'static str), expr(938: "x")), vis: Inherited, span: Span { lo: BytePos(29323), hi: BytePos(29363), expn_id: ExpnId(4294967295) } }, Item { ident: Y#0, attrs: [], id: 939, node: ItemConst(type(&'static str), expr(943: "y")), vis: Inherited, span: Span { lo: BytePos(29364), hi: BytePos(29404), expn_id: ExpnId(4294967295) } }, Item { ident: URGENCY#0, attrs: [], id: 944, node: ItemConst(type(&'static str), expr(948: "urgency")), vis: Inherited, span: Span { lo: BytePos(29405), hi: BytePos(29451), expn_id: ExpnId(4294967295) } }, Item { ident: NotificationHint#0, attrs: [Spanned { node: Attribute_ { id: AttrId(91), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// All currently implemented NotificationHints that can be send.", CookedStr), span: Span { lo: BytePos(29453), hi: BytePos(29518), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(29453), hi: BytePos(29518), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(29453), hi: BytePos(29518), expn_id: ExpnId(4294967295) } }], id: 949, node: ItemEnum(EnumDef { variants: [Spanned { node: Variant_ { name: ActionIcons#0, attrs: [Spanned { node: Attribute_ { id: AttrId(93), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// If true, server may interpret action identifiers as named icons and display those.", CookedStr), span: Span { lo: BytePos(29658), hi: BytePos(29744), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(29658), hi: BytePos(29744), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(29658), hi: BytePos(29744), expn_id: ExpnId(4294967295) } }], data: Tuple([Spanned { node: StructField_ { kind: UnnamedField(Inherited), id: 950, ty: type(bool), attrs: [] }, span: Span { lo: BytePos(29761), hi: BytePos(29766), expn_id: ExpnId(4294967295) } }], 952), disr_expr: None }, span: Span { lo: BytePos(29749), hi: BytePos(29766), expn_id: ExpnId(4294967295) } }, Spanned { node: Variant_ { name: Category#0, attrs: [Spanned { node: Attribute_ { id: AttrId(94), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Check out:", CookedStr), span: Span { lo: BytePos(29773), hi: BytePos(29787), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(29773), hi: BytePos(29787), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(29773), hi: BytePos(29787), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(95), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("///", CookedStr), span: Span { lo: BytePos(29792), hi: BytePos(29795), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(29792), hi: BytePos(29795), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(29792), hi: BytePos(29795), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(96), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// * http://www.galago-project.org/specs/notification/0.9/x211.html", CookedStr), span: Span { lo: BytePos(29800), hi: BytePos(29868), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(29800), hi: BytePos(29868), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(29800), hi: BytePos(29868), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(97), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// * https://developer.gnome.org/notification-spec/#categories", CookedStr), span: Span { lo: BytePos(29873), hi: BytePos(29936), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(29873), hi: BytePos(29936), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(29873), hi: BytePos(29936), expn_id: ExpnId(4294967295) } }], data: Tuple([Spanned { node: StructField_ { kind: UnnamedField(Inherited), id: 953, ty: type(String), attrs: [] }, span: Span { lo: BytePos(29950), hi: BytePos(29957), expn_id: ExpnId(4294967295) } }], 955), disr_expr: None }, span: Span { lo: BytePos(29941), hi: BytePos(29957), expn_id: ExpnId(4294967295) } }, Spanned { node: Variant_ { name: DesktopEntry#0, attrs: [Spanned { node: Attribute_ { id: AttrId(98), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Name of the DesktopEntry representing the calling application. In case of \"firefox.desktop\"", CookedStr), span: Span { lo: BytePos(29964), hi: BytePos(30059), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(29964), hi: BytePos(30059), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(29964), hi: BytePos(30059), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(99), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// use \"firefox\". May be used to retrieve the correct icon.", CookedStr), span: Span { lo: BytePos(30064), hi: BytePos(30124), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(30064), hi: BytePos(30124), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(30064), hi: BytePos(30124), expn_id: ExpnId(4294967295) } }], data: Tuple([Spanned { node: StructField_ { kind: UnnamedField(Inherited), id: 956, ty: type(String), attrs: [] }, span: Span { lo: BytePos(30142), hi: BytePos(30149), expn_id: ExpnId(4294967295) } }], 958), disr_expr: None }, span: Span { lo: BytePos(30129), hi: BytePos(30149), expn_id: ExpnId(4294967295) } }, Spanned { node: Variant_ { name: ImagePath#0, attrs: [Spanned { node: Attribute_ { id: AttrId(100), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Display the image at this path.", CookedStr), span: Span { lo: BytePos(30248), hi: BytePos(30283), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(30248), hi: BytePos(30283), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(30248), hi: BytePos(30283), expn_id: ExpnId(4294967295) } }], data: Tuple([Spanned { node: StructField_ { kind: UnnamedField(Inherited), id: 959, ty: type(String), attrs: [] }, span: Span { lo: BytePos(30298), hi: BytePos(30305), expn_id: ExpnId(4294967295) } }], 961), disr_expr: None }, span: Span { lo: BytePos(30288), hi: BytePos(30305), expn_id: ExpnId(4294967295) } }, Spanned { node: Variant_ { name: Resident#0, attrs: [Spanned { node: Attribute_ { id: AttrId(101), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// This does not work on all servers, however timeout=0 will do the job", CookedStr), span: Span { lo: BytePos(30312), hi: BytePos(30384), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(30312), hi: BytePos(30384), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(30312), hi: BytePos(30384), expn_id: ExpnId(4294967295) } }], data: Tuple([Spanned { node: StructField_ { kind: UnnamedField(Inherited), id: 962, ty: type(bool), attrs: [] }, span: Span { lo: BytePos(30398), hi: BytePos(30403), expn_id: ExpnId(4294967295) } }], 964), disr_expr: None }, span: Span { lo: BytePos(30389), hi: BytePos(30403), expn_id: ExpnId(4294967295) } }, Spanned { node: Variant_ { name: SoundFile#0, attrs: [Spanned { node: Attribute_ { id: AttrId(102), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Play the sound at this path.", CookedStr), span: Span { lo: BytePos(30410), hi: BytePos(30442), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(30410), hi: BytePos(30442), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(30410), hi: BytePos(30442), expn_id: ExpnId(4294967295) } }], data: Tuple([Spanned { node: StructField_ { kind: UnnamedField(Inherited), id: 965, ty: type(String), attrs: [] }, span: Span { lo: BytePos(30457), hi: BytePos(30464), expn_id: ExpnId(4294967295) } }], 967), disr_expr: None }, span: Span { lo: BytePos(30447), hi: BytePos(30464), expn_id: ExpnId(4294967295) } }, Spanned { node: Variant_ { name: SoundName#0, attrs: [Spanned { node: Attribute_ { id: AttrId(103), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// \tA themeable named sound from the freedesktop.org [sound naming specification](http://0pointer.de/public/sound-naming-spec.html) to play when the notification pops up. Similar to icon-name, only for sounds. An example would be \"message-new-instant\".", CookedStr), span: Span { lo: BytePos(30471), hi: BytePos(30724), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(30471), hi: BytePos(30724), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(30471), hi: BytePos(30724), expn_id: ExpnId(4294967295) } }], data: Tuple([Spanned { node: StructField_ { kind: UnnamedField(Inherited), id: 968, ty: type(String), attrs: [] }, span: Span { lo: BytePos(30739), hi: BytePos(30746), expn_id: ExpnId(4294967295) } }], 970), disr_expr: None }, span: Span { lo: BytePos(30729), hi: BytePos(30746), expn_id: ExpnId(4294967295) } }, Spanned { node: Variant_ { name: SuppressSound#0, attrs: [Spanned { node: Attribute_ { id: AttrId(104), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Suppress the notification sound.", CookedStr), span: Span { lo: BytePos(30753), hi: BytePos(30789), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(30753), hi: BytePos(30789), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(30753), hi: BytePos(30789), expn_id: ExpnId(4294967295) } }], data: Tuple([Spanned { node: StructField_ { kind: UnnamedField(Inherited), id: 971, ty: type(bool), attrs: [] }, span: Span { lo: BytePos(30808), hi: BytePos(30813), expn_id: ExpnId(4294967295) } }], 973), disr_expr: None }, span: Span { lo: BytePos(30794), hi: BytePos(30813), expn_id: ExpnId(4294967295) } }, Spanned { node: Variant_ { name: Transient#0, attrs: [Spanned { node: Attribute_ { id: AttrId(105), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// When set the server will treat the notification as transient and by-pass the server\'s persistence capability, if it should exist. When set the server will treat the notification as transient and by-pass the server\'s persistence capability, if it should exist.", CookedStr), span: Span { lo: BytePos(30820), hi: BytePos(31083), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(30820), hi: BytePos(31083), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(30820), hi: BytePos(31083), expn_id: ExpnId(4294967295) } }], data: Tuple([Spanned { node: StructField_ { kind: UnnamedField(Inherited), id: 974, ty: type(bool), attrs: [] }, span: Span { lo: BytePos(31098), hi: BytePos(31103), expn_id: ExpnId(4294967295) } }], 976), disr_expr: None }, span: Span { lo: BytePos(31088), hi: BytePos(31103), expn_id: ExpnId(4294967295) } }, Spanned { node: Variant_ { name: X#0, attrs: [Spanned { node: Attribute_ { id: AttrId(106), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Lets the notification point to a certain \'x\' position on the screen.", CookedStr), span: Span { lo: BytePos(31110), hi: BytePos(31182), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(31110), hi: BytePos(31182), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(31110), hi: BytePos(31182), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(107), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Requires `Y`.", CookedStr), span: Span { lo: BytePos(31187), hi: BytePos(31204), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(31187), hi: BytePos(31204), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(31187), hi: BytePos(31204), expn_id: ExpnId(4294967295) } }], data: Tuple([Spanned { node: StructField_ { kind: UnnamedField(Inherited), id: 977, ty: type(i32), attrs: [] }, span: Span { lo: BytePos(31211), hi: BytePos(31215), expn_id: ExpnId(4294967295) } }], 979), disr_expr: None }, span: Span { lo: BytePos(31209), hi: BytePos(31215), expn_id: ExpnId(4294967295) } }, Spanned { node: Variant_ { name: Y#0, attrs: [Spanned { node: Attribute_ { id: AttrId(108), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Lets the notification point to a certain \'y\' position on the screen.", CookedStr), span: Span { lo: BytePos(31222), hi: BytePos(31294), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(31222), hi: BytePos(31294), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(31222), hi: BytePos(31294), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(109), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Requires `X`.", CookedStr), span: Span { lo: BytePos(31299), hi: BytePos(31316), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(31299), hi: BytePos(31316), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(31299), hi: BytePos(31316), expn_id: ExpnId(4294967295) } }], data: Tuple([Spanned { node: StructField_ { kind: UnnamedField(Inherited), id: 980, ty: type(i32), attrs: [] }, span: Span { lo: BytePos(31323), hi: BytePos(31327), expn_id: ExpnId(4294967295) } }], 982), disr_expr: None }, span: Span { lo: BytePos(31321), hi: BytePos(31327), expn_id: ExpnId(4294967295) } }, Spanned { node: Variant_ { name: Urgency#0, attrs: [Spanned { node: Attribute_ { id: AttrId(110), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Pass me a NotificationUrgency, either Low, Normal or Critical", CookedStr), span: Span { lo: BytePos(31334), hi: BytePos(31399), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(31334), hi: BytePos(31399), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(31334), hi: BytePos(31399), expn_id: ExpnId(4294967295) } }], data: Tuple([Spanned { node: StructField_ { kind: UnnamedField(Inherited), id: 983, ty: type(NotificationUrgency), attrs: [] }, span: Span { lo: BytePos(31412), hi: BytePos(31432), expn_id: ExpnId(4294967295) } }], 985), disr_expr: None }, span: Span { lo: BytePos(31404), hi: BytePos(31432), expn_id: ExpnId(4294967295) } }, Spanned { node: Variant_ { name: Custom#0, attrs: [Spanned { node: Attribute_ { id: AttrId(111), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// If you want to pass something entirely different.", CookedStr), span: Span { lo: BytePos(31439), hi: BytePos(31492), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(31439), hi: BytePos(31492), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(31439), hi: BytePos(31492), expn_id: ExpnId(4294967295) } }], data: Tuple([Spanned { node: StructField_ { kind: UnnamedField(Inherited), id: 986, ty: type(String), attrs: [] }, span: Span { lo: BytePos(31504), hi: BytePos(31511), expn_id: ExpnId(4294967295) } }, Spanned { node: StructField_ { kind: UnnamedField(Inherited), id: 988, ty: type(String), attrs: [] }, span: Span { lo: BytePos(31511), hi: BytePos(31518), expn_id: ExpnId(4294967295) } }], 990), disr_expr: None }, span: Span { lo: BytePos(31497), hi: BytePos(31518), expn_id: ExpnId(4294967295) } }, Spanned { node: Variant_ { name: Invalid#0, attrs: [Spanned { node: Attribute_ { id: AttrId(112), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Only used by this NotificationServer implementation", CookedStr), span: Span { lo: BytePos(31525), hi: BytePos(31580), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(31525), hi: BytePos(31580), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(31525), hi: BytePos(31580), expn_id: ExpnId(4294967295) } }], data: Unit(991), disr_expr: None }, span: Span { lo: BytePos(31585), hi: BytePos(31592), expn_id: ExpnId(4294967295) } }] }, Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 992, predicates: [] } }), vis: Public, span: Span { lo: BytePos(29564), hi: BytePos(31633), expn_id: ExpnId(4294967295) } }, Item { ident: NotificationHint.::std::fmt::Debug#0, attrs: [Spanned { node: Attribute_ { id: AttrId(1194), style: Outer, value: Spanned { node: MetaWord("automatically_derived"), span: Span { lo: BytePos(29556), hi: BytePos(29561), expn_id: ExpnId(37) } }, is_sugared_doc: false }, span: Span { lo: BytePos(29556), hi: BytePos(29561), expn_id: ExpnId(37) } }, Spanned { node: Attribute_ { id: AttrId(1195), style: Outer, value: Spanned { node: MetaList("allow", [Spanned { node: MetaWord("unused_qualifications"), span: Span { lo: BytePos(29556), hi: BytePos(29561), expn_id: ExpnId(37) } }]), span: Span { lo: BytePos(29556), hi: BytePos(29561), expn_id: ExpnId(37) } }, is_sugared_doc: false }, span: Span { lo: BytePos(29556), hi: BytePos(29561), expn_id: ExpnId(37) } }], id: 993, node: ItemImpl(Normal, "positive", Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 1347, predicates: [] } }, Some(TraitRef { path: path(::std::fmt::Debug), ref_id: 1346 }), type(NotificationHint), [ImplItem { id: 994, ident: fmt#0, vis: Inherited, attrs: [], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(997: self), id: 996 }, Arg { ty: type(&mut ::std::fmt::Formatter), pat: pat(1000: __arg_0), id: 999 }], output: Return(type(::std::fmt::Result)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 995, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutImmutable, self#0), span: Span { lo: BytePos(29556), hi: BytePos(29561), expn_id: ExpnId(37) } } }, Block { stmts: [], expr: Some(expr(1005: match (&*self,) {
    (&NotificationHint::ActionIcons(ref __self_0),) => {
        let mut builder = __arg_0.debug_tuple("ActionIcons");
        let _ = builder.field(&&(*__self_0));
        builder.finish()
    }
    (&NotificationHint::Category(ref __self_0),) => {
        let mut builder = __arg_0.debug_tuple("Category");
        let _ = builder.field(&&(*__self_0));
        builder.finish()
    }
    (&NotificationHint::DesktopEntry(ref __self_0),) => {
        let mut builder = __arg_0.debug_tuple("DesktopEntry");
        let _ = builder.field(&&(*__self_0));
        builder.finish()
    }
    (&NotificationHint::ImagePath(ref __self_0),) => {
        let mut builder = __arg_0.debug_tuple("ImagePath");
        let _ = builder.field(&&(*__self_0));
        builder.finish()
    }
    (&NotificationHint::Resident(ref __self_0),) => {
        let mut builder = __arg_0.debug_tuple("Resident");
        let _ = builder.field(&&(*__self_0));
        builder.finish()
    }
    (&NotificationHint::SoundFile(ref __self_0),) => {
        let mut builder = __arg_0.debug_tuple("SoundFile");
        let _ = builder.field(&&(*__self_0));
        builder.finish()
    }
    (&NotificationHint::SoundName(ref __self_0),) => {
        let mut builder = __arg_0.debug_tuple("SoundName");
        let _ = builder.field(&&(*__self_0));
        builder.finish()
    }
    (&NotificationHint::SuppressSound(ref __self_0),) => {
        let mut builder = __arg_0.debug_tuple("SuppressSound");
        let _ = builder.field(&&(*__self_0));
        builder.finish()
    }
    (&NotificationHint::Transient(ref __self_0),) => {
        let mut builder = __arg_0.debug_tuple("Transient");
        let _ = builder.field(&&(*__self_0));
        builder.finish()
    }
    (&NotificationHint::X(ref __self_0),) => {
        let mut builder = __arg_0.debug_tuple("X");
        let _ = builder.field(&&(*__self_0));
        builder.finish()
    }
    (&NotificationHint::Y(ref __self_0),) => {
        let mut builder = __arg_0.debug_tuple("Y");
        let _ = builder.field(&&(*__self_0));
        builder.finish()
    }
    (&NotificationHint::Urgency(ref __self_0),) => {
        let mut builder = __arg_0.debug_tuple("Urgency");
        let _ = builder.field(&&(*__self_0));
        builder.finish()
    }
    (&NotificationHint::Custom(ref __self_0, ref __self_1),) => {
        let mut builder = __arg_0.debug_tuple("Custom");
        let _ = builder.field(&&(*__self_0));
        let _ = builder.field(&&(*__self_1));
        builder.finish()
    }
    (&NotificationHint::Invalid,) => {
        let mut builder = __arg_0.debug_tuple("Invalid");
        builder.finish()
    }
})), id: 1004, rules: DefaultBlock, span: Span { lo: BytePos(29556), hi: BytePos(29561), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(29556), hi: BytePos(29561), expn_id: ExpnId(37) } }]), vis: Inherited, span: Span { lo: BytePos(29556), hi: BytePos(29561), expn_id: ExpnId(37) } }, Item { ident: NotificationHint.::std::clone::Clone#0, attrs: [Spanned { node: Attribute_ { id: AttrId(1197), style: Outer, value: Spanned { node: MetaWord("automatically_derived"), span: Span { lo: BytePos(29549), hi: BytePos(29554), expn_id: ExpnId(52) } }, is_sugared_doc: false }, span: Span { lo: BytePos(29549), hi: BytePos(29554), expn_id: ExpnId(52) } }, Spanned { node: Attribute_ { id: AttrId(1198), style: Outer, value: Spanned { node: MetaList("allow", [Spanned { node: MetaWord("unused_qualifications"), span: Span { lo: BytePos(29549), hi: BytePos(29554), expn_id: ExpnId(52) } }]), span: Span { lo: BytePos(29549), hi: BytePos(29554), expn_id: ExpnId(52) } }, is_sugared_doc: false }, span: Span { lo: BytePos(29549), hi: BytePos(29554), expn_id: ExpnId(52) } }], id: 1349, node: ItemImpl(Normal, "positive", Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 1530, predicates: [] } }, Some(TraitRef { path: path(::std::clone::Clone), ref_id: 1529 }), type(NotificationHint), [ImplItem { id: 1350, ident: clone#0, vis: Inherited, attrs: [Spanned { node: Attribute_ { id: AttrId(1196), style: Outer, value: Spanned { node: MetaWord("inline"), span: Span { lo: BytePos(29549), hi: BytePos(29554), expn_id: ExpnId(4294967295) } }, is_sugared_doc: false }, span: Span { lo: BytePos(29549), hi: BytePos(29554), expn_id: ExpnId(4294967295) } }], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(1353: self), id: 1352 }], output: Return(type(NotificationHint)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 1351, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutImmutable, self#0), span: Span { lo: BytePos(29549), hi: BytePos(29554), expn_id: ExpnId(52) } } }, Block { stmts: [], expr: Some(expr(1357: match (&*self,) {
    (&NotificationHint::ActionIcons(ref __self_0),) =>
    NotificationHint::ActionIcons(::std::clone::Clone::clone(&(*__self_0))),
    (&NotificationHint::Category(ref __self_0),) =>
    NotificationHint::Category(::std::clone::Clone::clone(&(*__self_0))),
    (&NotificationHint::DesktopEntry(ref __self_0),) =>
    NotificationHint::DesktopEntry(::std::clone::Clone::clone(&(*__self_0))),
    (&NotificationHint::ImagePath(ref __self_0),) =>
    NotificationHint::ImagePath(::std::clone::Clone::clone(&(*__self_0))),
    (&NotificationHint::Resident(ref __self_0),) =>
    NotificationHint::Resident(::std::clone::Clone::clone(&(*__self_0))),
    (&NotificationHint::SoundFile(ref __self_0),) =>
    NotificationHint::SoundFile(::std::clone::Clone::clone(&(*__self_0))),
    (&NotificationHint::SoundName(ref __self_0),) =>
    NotificationHint::SoundName(::std::clone::Clone::clone(&(*__self_0))),
    (&NotificationHint::SuppressSound(ref __self_0),) =>
    NotificationHint::SuppressSound(::std::clone::Clone::clone(&(*__self_0))),
    (&NotificationHint::Transient(ref __self_0),) =>
    NotificationHint::Transient(::std::clone::Clone::clone(&(*__self_0))),
    (&NotificationHint::X(ref __self_0),) =>
    NotificationHint::X(::std::clone::Clone::clone(&(*__self_0))),
    (&NotificationHint::Y(ref __self_0),) =>
    NotificationHint::Y(::std::clone::Clone::clone(&(*__self_0))),
    (&NotificationHint::Urgency(ref __self_0),) =>
    NotificationHint::Urgency(::std::clone::Clone::clone(&(*__self_0))),
    (&NotificationHint::Custom(ref __self_0, ref __self_1),) =>
    NotificationHint::Custom(::std::clone::Clone::clone(&(*__self_0)),
                             ::std::clone::Clone::clone(&(*__self_1))),
    (&NotificationHint::Invalid,) => NotificationHint::Invalid,
})), id: 1356, rules: DefaultBlock, span: Span { lo: BytePos(29549), hi: BytePos(29554), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(29549), hi: BytePos(29554), expn_id: ExpnId(52) } }]), vis: Inherited, span: Span { lo: BytePos(29549), hi: BytePos(29554), expn_id: ExpnId(52) } }, Item { ident: NotificationHint.::std::hash::Hash#0, attrs: [Spanned { node: Attribute_ { id: AttrId(1199), style: Outer, value: Spanned { node: MetaWord("automatically_derived"), span: Span { lo: BytePos(29543), hi: BytePos(29547), expn_id: ExpnId(67) } }, is_sugared_doc: false }, span: Span { lo: BytePos(29543), hi: BytePos(29547), expn_id: ExpnId(67) } }, Spanned { node: Attribute_ { id: AttrId(1200), style: Outer, value: Spanned { node: MetaList("allow", [Spanned { node: MetaWord("unused_qualifications"), span: Span { lo: BytePos(29543), hi: BytePos(29547), expn_id: ExpnId(67) } }]), span: Span { lo: BytePos(29543), hi: BytePos(29547), expn_id: ExpnId(67) } }, is_sugared_doc: false }, span: Span { lo: BytePos(29543), hi: BytePos(29547), expn_id: ExpnId(67) } }], id: 1532, node: ItemImpl(Normal, "positive", Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 1832, predicates: [] } }, Some(TraitRef { path: path(::std::hash::Hash), ref_id: 1831 }), type(NotificationHint), [ImplItem { id: 1533, ident: hash#0, vis: Inherited, attrs: [], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(1538: self), id: 1537 }, Arg { ty: type(&mut __H), pat: pat(1541: __arg_0), id: 1540 }], output: Return(type(())), variadic: false }, generics: Generics { lifetimes: [], ty_params: [TyParam { ident: __H#0, id: 1534, bounds: [TraitTyParamBound(PolyTraitRef { bound_lifetimes: [], trait_ref: TraitRef { path: path(::std::hash::Hasher), ref_id: 1535 }, span: Span { lo: BytePos(29543), hi: BytePos(29547), expn_id: ExpnId(67) } }, None)], default: None, span: Span { lo: BytePos(29543), hi: BytePos(29547), expn_id: ExpnId(4294967295) } }], where_clause: WhereClause { id: 1536, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutImmutable, self#0), span: Span { lo: BytePos(29543), hi: BytePos(29547), expn_id: ExpnId(67) } } }, Block { stmts: [], expr: Some(expr(1546: match (&*self,) {
    (&NotificationHint::ActionIcons(ref __self_0),) => {
        ::std::hash::Hash::hash(&0usize, __arg_0);
        ::std::hash::Hash::hash(&(*__self_0), __arg_0);
    }
    (&NotificationHint::Category(ref __self_0),) => {
        ::std::hash::Hash::hash(&1usize, __arg_0);
        ::std::hash::Hash::hash(&(*__self_0), __arg_0);
    }
    (&NotificationHint::DesktopEntry(ref __self_0),) => {
        ::std::hash::Hash::hash(&2usize, __arg_0);
        ::std::hash::Hash::hash(&(*__self_0), __arg_0);
    }
    (&NotificationHint::ImagePath(ref __self_0),) => {
        ::std::hash::Hash::hash(&3usize, __arg_0);
        ::std::hash::Hash::hash(&(*__self_0), __arg_0);
    }
    (&NotificationHint::Resident(ref __self_0),) => {
        ::std::hash::Hash::hash(&4usize, __arg_0);
        ::std::hash::Hash::hash(&(*__self_0), __arg_0);
    }
    (&NotificationHint::SoundFile(ref __self_0),) => {
        ::std::hash::Hash::hash(&5usize, __arg_0);
        ::std::hash::Hash::hash(&(*__self_0), __arg_0);
    }
    (&NotificationHint::SoundName(ref __self_0),) => {
        ::std::hash::Hash::hash(&6usize, __arg_0);
        ::std::hash::Hash::hash(&(*__self_0), __arg_0);
    }
    (&NotificationHint::SuppressSound(ref __self_0),) => {
        ::std::hash::Hash::hash(&7usize, __arg_0);
        ::std::hash::Hash::hash(&(*__self_0), __arg_0);
    }
    (&NotificationHint::Transient(ref __self_0),) => {
        ::std::hash::Hash::hash(&8usize, __arg_0);
        ::std::hash::Hash::hash(&(*__self_0), __arg_0);
    }
    (&NotificationHint::X(ref __self_0),) => {
        ::std::hash::Hash::hash(&9usize, __arg_0);
        ::std::hash::Hash::hash(&(*__self_0), __arg_0);
    }
    (&NotificationHint::Y(ref __self_0),) => {
        ::std::hash::Hash::hash(&10usize, __arg_0);
        ::std::hash::Hash::hash(&(*__self_0), __arg_0);
    }
    (&NotificationHint::Urgency(ref __self_0),) => {
        ::std::hash::Hash::hash(&11usize, __arg_0);
        ::std::hash::Hash::hash(&(*__self_0), __arg_0);
    }
    (&NotificationHint::Custom(ref __self_0, ref __self_1),) => {
        ::std::hash::Hash::hash(&12usize, __arg_0);
        ::std::hash::Hash::hash(&(*__self_0), __arg_0);
        ::std::hash::Hash::hash(&(*__self_1), __arg_0);
    }
    (&NotificationHint::Invalid,) => {
        ::std::hash::Hash::hash(&13usize, __arg_0);
    }
})), id: 1545, rules: DefaultBlock, span: Span { lo: BytePos(29543), hi: BytePos(29547), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(29543), hi: BytePos(29547), expn_id: ExpnId(67) } }]), vis: Inherited, span: Span { lo: BytePos(29543), hi: BytePos(29547), expn_id: ExpnId(67) } }, Item { ident: NotificationHint.::std::cmp::PartialEq#0, attrs: [Spanned { node: Attribute_ { id: AttrId(1203), style: Outer, value: Spanned { node: MetaWord("automatically_derived"), span: Span { lo: BytePos(29532), hi: BytePos(29541), expn_id: ExpnId(82) } }, is_sugared_doc: false }, span: Span { lo: BytePos(29532), hi: BytePos(29541), expn_id: ExpnId(82) } }, Spanned { node: Attribute_ { id: AttrId(1204), style: Outer, value: Spanned { node: MetaList("allow", [Spanned { node: MetaWord("unused_qualifications"), span: Span { lo: BytePos(29532), hi: BytePos(29541), expn_id: ExpnId(82) } }]), span: Span { lo: BytePos(29532), hi: BytePos(29541), expn_id: ExpnId(82) } }, is_sugared_doc: false }, span: Span { lo: BytePos(29532), hi: BytePos(29541), expn_id: ExpnId(82) } }], id: 1834, node: ItemImpl(Normal, "positive", Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 2404, predicates: [] } }, Some(TraitRef { path: path(::std::cmp::PartialEq), ref_id: 2403 }), type(NotificationHint), [ImplItem { id: 1835, ident: eq#0, vis: Inherited, attrs: [Spanned { node: Attribute_ { id: AttrId(1201), style: Outer, value: Spanned { node: MetaWord("inline"), span: Span { lo: BytePos(29532), hi: BytePos(29541), expn_id: ExpnId(4294967295) } }, is_sugared_doc: false }, span: Span { lo: BytePos(29532), hi: BytePos(29541), expn_id: ExpnId(4294967295) } }], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(1838: self), id: 1837 }, Arg { ty: type(&NotificationHint), pat: pat(1841: __arg_0), id: 1840 }], output: Return(type(bool)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 1836, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutImmutable, self#0), span: Span { lo: BytePos(29532), hi: BytePos(29541), expn_id: ExpnId(82) } } }, Block { stmts: [], expr: Some(expr(1846: {
    let __self_vi =
        unsafe { ::std::intrinsics::discriminant_value(&*self) } as i32;
    let __arg_1_vi =
        unsafe { ::std::intrinsics::discriminant_value(&*__arg_0) } as i32;
    if true && __self_vi == __arg_1_vi {
        match (&*self, &*__arg_0) {
            (&NotificationHint::ActionIcons(ref __self_0),
             &NotificationHint::ActionIcons(ref __arg_1_0)) =>
            true && (*__self_0) == (*__arg_1_0),
            (&NotificationHint::Category(ref __self_0),
             &NotificationHint::Category(ref __arg_1_0)) =>
            true && (*__self_0) == (*__arg_1_0),
            (&NotificationHint::DesktopEntry(ref __self_0),
             &NotificationHint::DesktopEntry(ref __arg_1_0)) =>
            true && (*__self_0) == (*__arg_1_0),
            (&NotificationHint::ImagePath(ref __self_0),
             &NotificationHint::ImagePath(ref __arg_1_0)) =>
            true && (*__self_0) == (*__arg_1_0),
            (&NotificationHint::Resident(ref __self_0),
             &NotificationHint::Resident(ref __arg_1_0)) =>
            true && (*__self_0) == (*__arg_1_0),
            (&NotificationHint::SoundFile(ref __self_0),
             &NotificationHint::SoundFile(ref __arg_1_0)) =>
            true && (*__self_0) == (*__arg_1_0),
            (&NotificationHint::SoundName(ref __self_0),
             &NotificationHint::SoundName(ref __arg_1_0)) =>
            true && (*__self_0) == (*__arg_1_0),
            (&NotificationHint::SuppressSound(ref __self_0),
             &NotificationHint::SuppressSound(ref __arg_1_0)) =>
            true && (*__self_0) == (*__arg_1_0),
            (&NotificationHint::Transient(ref __self_0),
             &NotificationHint::Transient(ref __arg_1_0)) =>
            true && (*__self_0) == (*__arg_1_0),
            (&NotificationHint::X(ref __self_0),
             &NotificationHint::X(ref __arg_1_0)) =>
            true && (*__self_0) == (*__arg_1_0),
            (&NotificationHint::Y(ref __self_0),
             &NotificationHint::Y(ref __arg_1_0)) =>
            true && (*__self_0) == (*__arg_1_0),
            (&NotificationHint::Urgency(ref __self_0),
             &NotificationHint::Urgency(ref __arg_1_0)) =>
            true && (*__self_0) == (*__arg_1_0),
            (&NotificationHint::Custom(ref __self_0, ref __self_1),
             &NotificationHint::Custom(ref __arg_1_0, ref __arg_1_1)) =>
            true && (*__self_0) == (*__arg_1_0) &&
                (*__self_1) == (*__arg_1_1),
            (&NotificationHint::Invalid, &NotificationHint::Invalid) => true,
            _ => unsafe { ::std::intrinsics::unreachable() }
        }
    } else { false }
})), id: 1845, rules: DefaultBlock, span: Span { lo: BytePos(29532), hi: BytePos(29541), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(29532), hi: BytePos(29541), expn_id: ExpnId(82) } }, ImplItem { id: 2119, ident: ne#0, vis: Inherited, attrs: [Spanned { node: Attribute_ { id: AttrId(1202), style: Outer, value: Spanned { node: MetaWord("inline"), span: Span { lo: BytePos(29532), hi: BytePos(29541), expn_id: ExpnId(4294967295) } }, is_sugared_doc: false }, span: Span { lo: BytePos(29532), hi: BytePos(29541), expn_id: ExpnId(4294967295) } }], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(2122: self), id: 2121 }, Arg { ty: type(&NotificationHint), pat: pat(2125: __arg_0), id: 2124 }], output: Return(type(bool)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 2120, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutImmutable, self#0), span: Span { lo: BytePos(29532), hi: BytePos(29541), expn_id: ExpnId(82) } } }, Block { stmts: [], expr: Some(expr(2130: {
    let __self_vi =
        unsafe { ::std::intrinsics::discriminant_value(&*self) } as i32;
    let __arg_1_vi =
        unsafe { ::std::intrinsics::discriminant_value(&*__arg_0) } as i32;
    if true && __self_vi == __arg_1_vi {
        match (&*self, &*__arg_0) {
            (&NotificationHint::ActionIcons(ref __self_0),
             &NotificationHint::ActionIcons(ref __arg_1_0)) =>
            false || (*__self_0) != (*__arg_1_0),
            (&NotificationHint::Category(ref __self_0),
             &NotificationHint::Category(ref __arg_1_0)) =>
            false || (*__self_0) != (*__arg_1_0),
            (&NotificationHint::DesktopEntry(ref __self_0),
             &NotificationHint::DesktopEntry(ref __arg_1_0)) =>
            false || (*__self_0) != (*__arg_1_0),
            (&NotificationHint::ImagePath(ref __self_0),
             &NotificationHint::ImagePath(ref __arg_1_0)) =>
            false || (*__self_0) != (*__arg_1_0),
            (&NotificationHint::Resident(ref __self_0),
             &NotificationHint::Resident(ref __arg_1_0)) =>
            false || (*__self_0) != (*__arg_1_0),
            (&NotificationHint::SoundFile(ref __self_0),
             &NotificationHint::SoundFile(ref __arg_1_0)) =>
            false || (*__self_0) != (*__arg_1_0),
            (&NotificationHint::SoundName(ref __self_0),
             &NotificationHint::SoundName(ref __arg_1_0)) =>
            false || (*__self_0) != (*__arg_1_0),
            (&NotificationHint::SuppressSound(ref __self_0),
             &NotificationHint::SuppressSound(ref __arg_1_0)) =>
            false || (*__self_0) != (*__arg_1_0),
            (&NotificationHint::Transient(ref __self_0),
             &NotificationHint::Transient(ref __arg_1_0)) =>
            false || (*__self_0) != (*__arg_1_0),
            (&NotificationHint::X(ref __self_0),
             &NotificationHint::X(ref __arg_1_0)) =>
            false || (*__self_0) != (*__arg_1_0),
            (&NotificationHint::Y(ref __self_0),
             &NotificationHint::Y(ref __arg_1_0)) =>
            false || (*__self_0) != (*__arg_1_0),
            (&NotificationHint::Urgency(ref __self_0),
             &NotificationHint::Urgency(ref __arg_1_0)) =>
            false || (*__self_0) != (*__arg_1_0),
            (&NotificationHint::Custom(ref __self_0, ref __self_1),
             &NotificationHint::Custom(ref __arg_1_0, ref __arg_1_1)) =>
            false || (*__self_0) != (*__arg_1_0) ||
                (*__self_1) != (*__arg_1_1),
            (&NotificationHint::Invalid, &NotificationHint::Invalid) => false,
            _ => unsafe { ::std::intrinsics::unreachable() }
        }
    } else { true }
})), id: 2129, rules: DefaultBlock, span: Span { lo: BytePos(29532), hi: BytePos(29541), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(29532), hi: BytePos(29541), expn_id: ExpnId(82) } }]), vis: Inherited, span: Span { lo: BytePos(29532), hi: BytePos(29541), expn_id: ExpnId(82) } }, Item { ident: NotificationHint.::std::cmp::Eq#0, attrs: [Spanned { node: Attribute_ { id: AttrId(1207), style: Outer, value: Spanned { node: MetaWord("automatically_derived"), span: Span { lo: BytePos(29528), hi: BytePos(29530), expn_id: ExpnId(139) } }, is_sugared_doc: false }, span: Span { lo: BytePos(29528), hi: BytePos(29530), expn_id: ExpnId(139) } }, Spanned { node: Attribute_ { id: AttrId(1208), style: Outer, value: Spanned { node: MetaList("allow", [Spanned { node: MetaWord("unused_qualifications"), span: Span { lo: BytePos(29528), hi: BytePos(29530), expn_id: ExpnId(139) } }]), span: Span { lo: BytePos(29528), hi: BytePos(29530), expn_id: ExpnId(139) } }, is_sugared_doc: false }, span: Span { lo: BytePos(29528), hi: BytePos(29530), expn_id: ExpnId(139) } }], id: 2406, node: ItemImpl(Normal, "positive", Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 2574, predicates: [] } }, Some(TraitRef { path: path(::std::cmp::Eq), ref_id: 2573 }), type(NotificationHint), [ImplItem { id: 2407, ident: assert_receiver_is_total_eq#0, vis: Inherited, attrs: [Spanned { node: Attribute_ { id: AttrId(1205), style: Outer, value: Spanned { node: MetaWord("inline"), span: Span { lo: BytePos(29528), hi: BytePos(29530), expn_id: ExpnId(4294967295) } }, is_sugared_doc: false }, span: Span { lo: BytePos(29528), hi: BytePos(29530), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(1206), style: Outer, value: Spanned { node: MetaList("doc", [Spanned { node: MetaWord("hidden"), span: Span { lo: BytePos(29528), hi: BytePos(29530), expn_id: ExpnId(4294967295) } }]), span: Span { lo: BytePos(29528), hi: BytePos(29530), expn_id: ExpnId(4294967295) } }, is_sugared_doc: false }, span: Span { lo: BytePos(29528), hi: BytePos(29530), expn_id: ExpnId(4294967295) } }], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(2410: self), id: 2409 }], output: Return(type(())), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 2408, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutImmutable, self#0), span: Span { lo: BytePos(29528), hi: BytePos(29530), expn_id: ExpnId(139) } } }, Block { stmts: [], expr: Some(expr(2414: match (&*self,) {
    (&NotificationHint::ActionIcons(ref __self_0),) => {
        (*__self_0).assert_receiver_is_total_eq();
    }
    (&NotificationHint::Category(ref __self_0),) => {
        (*__self_0).assert_receiver_is_total_eq();
    }
    (&NotificationHint::DesktopEntry(ref __self_0),) => {
        (*__self_0).assert_receiver_is_total_eq();
    }
    (&NotificationHint::ImagePath(ref __self_0),) => {
        (*__self_0).assert_receiver_is_total_eq();
    }
    (&NotificationHint::Resident(ref __self_0),) => {
        (*__self_0).assert_receiver_is_total_eq();
    }
    (&NotificationHint::SoundFile(ref __self_0),) => {
        (*__self_0).assert_receiver_is_total_eq();
    }
    (&NotificationHint::SoundName(ref __self_0),) => {
        (*__self_0).assert_receiver_is_total_eq();
    }
    (&NotificationHint::SuppressSound(ref __self_0),) => {
        (*__self_0).assert_receiver_is_total_eq();
    }
    (&NotificationHint::Transient(ref __self_0),) => {
        (*__self_0).assert_receiver_is_total_eq();
    }
    (&NotificationHint::X(ref __self_0),) => {
        (*__self_0).assert_receiver_is_total_eq();
    }
    (&NotificationHint::Y(ref __self_0),) => {
        (*__self_0).assert_receiver_is_total_eq();
    }
    (&NotificationHint::Urgency(ref __self_0),) => {
        (*__self_0).assert_receiver_is_total_eq();
    }
    (&NotificationHint::Custom(ref __self_0, ref __self_1),) => {
        (*__self_0).assert_receiver_is_total_eq();
        (*__self_1).assert_receiver_is_total_eq();
    }
    (&NotificationHint::Invalid,) => { }
})), id: 2413, rules: DefaultBlock, span: Span { lo: BytePos(29528), hi: BytePos(29530), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(29528), hi: BytePos(29530), expn_id: ExpnId(139) } }]), vis: Inherited, span: Span { lo: BytePos(29528), hi: BytePos(29530), expn_id: ExpnId(139) } }, Item { ident: NotificationHint#0, attrs: [], id: 2576, node: ItemImpl(Normal, "positive", Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 2678, predicates: [] } }, None, type(NotificationHint), [ImplItem { id: 2577, ident: as_bool#0, vis: Public, attrs: [Spanned { node: Attribute_ { id: AttrId(114), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Get the `bool` representation of this hint.", CookedStr), span: Span { lo: BytePos(31663), hi: BytePos(31710), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(31663), hi: BytePos(31710), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(31663), hi: BytePos(31710), expn_id: ExpnId(4294967295) } }], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(2580: self), id: 2579 }], output: Return(type(Option<bool>)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 2578, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutImmutable, self#0), span: Span { lo: BytePos(31730), hi: BytePos(31739), expn_id: ExpnId(4294967295) } } }, Block { stmts: [], expr: Some(expr(2585: match self {
    &NotificationHint::ActionIcons(inner) => Some(inner),
    &NotificationHint::Resident(inner) => Some(inner),
    &NotificationHint::SuppressSound(inner) => Some(inner),
    &NotificationHint::Transient(inner) => Some(inner),
    _ => None,
})), id: 2584, rules: DefaultBlock, span: Span { lo: BytePos(31753), hi: BytePos(32085), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(31715), hi: BytePos(32085), expn_id: ExpnId(4294967295) } }, ImplItem { id: 2613, ident: as_i32#0, vis: Public, attrs: [Spanned { node: Attribute_ { id: AttrId(115), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Get the `i32` representation of this hint.", CookedStr), span: Span { lo: BytePos(32091), hi: BytePos(32137), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(32091), hi: BytePos(32137), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(32091), hi: BytePos(32137), expn_id: ExpnId(4294967295) } }], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(2616: self), id: 2615 }], output: Return(type(Option<i32>)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 2614, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutImmutable, self#0), span: Span { lo: BytePos(32156), hi: BytePos(32165), expn_id: ExpnId(4294967295) } } }, Block { stmts: [], expr: Some(expr(2621: match self {
    &NotificationHint::X(inner) => Some(inner),
    &NotificationHint::Y(inner) => Some(inner),
    _ => None,
})), id: 2620, rules: DefaultBlock, span: Span { lo: BytePos(32178), hi: BytePos(32350), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(32142), hi: BytePos(32350), expn_id: ExpnId(4294967295) } }, ImplItem { id: 2637, ident: as_str#0, vis: Public, attrs: [Spanned { node: Attribute_ { id: AttrId(116), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Get the `&str` representation of this hint.", CookedStr), span: Span { lo: BytePos(32356), hi: BytePos(32403), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(32356), hi: BytePos(32403), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(32356), hi: BytePos(32403), expn_id: ExpnId(4294967295) } }], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(2640: self), id: 2639 }], output: Return(type(Option<&str>)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 2638, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutImmutable, self#0), span: Span { lo: BytePos(32422), hi: BytePos(32431), expn_id: ExpnId(4294967295) } } }, Block { stmts: [], expr: Some(expr(2646: match self {
    &NotificationHint::DesktopEntry(ref inner) => Some(&inner),
    &NotificationHint::ImagePath(ref inner) => Some(&inner),
    &NotificationHint::SoundFile(ref inner) => Some(&inner),
    &NotificationHint::SoundName(ref inner) => Some(&inner),
    _ => None,
})), id: 2645, rules: DefaultBlock, span: Span { lo: BytePos(32445), hi: BytePos(32785), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(32408), hi: BytePos(32785), expn_id: ExpnId(4294967295) } }]), vis: Inherited, span: Span { lo: BytePos(31635), hi: BytePos(32787), expn_id: ExpnId(4294967295) } }, Item { ident: MessageItem.From<&'a NotificationHint>#0, attrs: [], id: 2680, node: ItemImpl(Normal, "positive", Generics { lifetimes: [LifetimeDef { lifetime: lifetime(2851: 'a), bounds: [] }], ty_params: [], where_clause: WhereClause { id: 2852, predicates: [] } }, Some(TraitRef { path: path(From<&'a NotificationHint>), ref_id: 2847 }), type(MessageItem), [ImplItem { id: 2681, ident: from#0, vis: Inherited, attrs: [], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(&NotificationHint), pat: pat(2684: hint), id: 2683 }], output: Return(type(MessageItem)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 2682, predicates: [] } }, explicit_self: Spanned { node: SelfStatic, span: Span { lo: BytePos(32855), hi: BytePos(32882), expn_id: ExpnId(4294967295) } } }, Block { stmts: [stmt(2689: let hint: (String, MessageItem) =
    match hint {
        &NotificationHint::ActionIcons(value) =>
        (ACTION_ICONS.to_owned(), MessageItem::Bool(value)),
        &NotificationHint::Category(ref value) =>
        (CATEGORY.to_owned(), MessageItem::Str(value.clone())),
        &NotificationHint::DesktopEntry(ref value) =>
        (DESKTOP_ENTRY.to_owned(), MessageItem::Str(value.clone())),
        &NotificationHint::ImagePath(ref value) =>
        (IMAGE_PATH.to_owned(), MessageItem::Str(value.clone())),
        &NotificationHint::Resident(value) =>
        (RESIDENT.to_owned(), MessageItem::Bool(value)),
        &NotificationHint::SoundFile(ref value) =>
        (SOUND_FILE.to_owned(), MessageItem::Str(value.clone())),
        &NotificationHint::SoundName(ref value) =>
        (SOUND_NAME.to_owned(), MessageItem::Str(value.clone())),
        &NotificationHint::SuppressSound(value) =>
        (SUPPRESS_SOUND.to_owned(), MessageItem::Bool(value)),
        &NotificationHint::Transient(value) =>
        (TRANSIENT.to_owned(), MessageItem::Bool(value)),
        &NotificationHint::X(value) =>
        (X.to_owned(), MessageItem::Int32(value)),
        &NotificationHint::Y(value) =>
        (Y.to_owned(), MessageItem::Int32(value)),
        &NotificationHint::Urgency(value) =>
        (URGENCY.to_owned(), MessageItem::Byte(value as u8)),
        &NotificationHint::Custom(ref key, ref val) =>
        (key.to_owned(), MessageItem::Str(val.to_owned())),
        &NotificationHint::Invalid =>
        ("invalid".to_owned(), MessageItem::Str("Invalid".to_owned())),
    };)], expr: Some(expr(2832: MessageItem::DictEntry(Box::new(hint.0.into()),
                       Box::new(MessageItem::Variant(Box::new(hint.1)))))), id: 2688, rules: DefaultBlock, span: Span { lo: BytePos(32895), hi: BytePos(35058), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(32847), hi: BytePos(35058), expn_id: ExpnId(4294967295) } }]), vis: Inherited, span: Span { lo: BytePos(32789), hi: BytePos(35060), expn_id: ExpnId(4294967295) } }, Item { ident: NotificationHint.From<&'a MessageItem>#0, attrs: [], id: 2854, node: ItemImpl(Normal, "positive", Generics { lifetimes: [LifetimeDef { lifetime: lifetime(3192: 'a), bounds: [] }], ty_params: [], where_clause: WhereClause { id: 3193, predicates: [] } }, Some(TraitRef { path: path(From<&'a MessageItem>), ref_id: 3188 }), type(NotificationHint), [ImplItem { id: 2855, ident: from#0, vis: Inherited, attrs: [], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(&MessageItem), pat: pat(2858: item), id: 2857 }], output: Return(type(NotificationHint)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 2856, predicates: [] } }, explicit_self: Spanned { node: SelfStatic, span: Span { lo: BytePos(35183), hi: BytePos(35205), expn_id: ExpnId(4294967295) } } }, Block { stmts: [], expr: Some(expr(2863: match item {
    &MessageItem::DictEntry(ref key, ref value) if
    unwrap_message_str(&**key) == CATEGORY =>
    NotificationHint::Category(unwrap_message_str(&**value)),
    &MessageItem::DictEntry(ref key, ref value) if
    unwrap_message_str(&**key) == ACTION_ICONS =>
    NotificationHint::ActionIcons(unwrap_message_bool(&**value)),
    &MessageItem::DictEntry(ref key, ref value) if
    unwrap_message_str(&**key) == DESKTOP_ENTRY =>
    NotificationHint::DesktopEntry(unwrap_message_str(&**value)),
    &MessageItem::DictEntry(ref key, ref value) if
    unwrap_message_str(&**key) == IMAGE_PATH =>
    NotificationHint::ImagePath(unwrap_message_str(&**value)),
    &MessageItem::DictEntry(ref key, ref value) if
    unwrap_message_str(&**key) == RESIDENT =>
    NotificationHint::Resident(unwrap_message_bool(&**value)),
    &MessageItem::DictEntry(ref key, ref value) if
    unwrap_message_str(&**key) == SOUND_FILE =>
    NotificationHint::SoundFile(unwrap_message_str(&**value)),
    &MessageItem::DictEntry(ref key, ref value) if
    unwrap_message_str(&**key) == SOUND_NAME =>
    NotificationHint::SoundName(unwrap_message_str(&**value)),
    &MessageItem::DictEntry(ref key, ref value) if
    unwrap_message_str(&**key) == SUPPRESS_SOUND =>
    NotificationHint::SuppressSound(unwrap_message_bool(&**value)),
    &MessageItem::DictEntry(ref key, ref value) if
    unwrap_message_str(&**key) == TRANSIENT =>
    NotificationHint::Transient(unwrap_message_bool(&**value)),
    &MessageItem::DictEntry(ref key, ref value) if
    unwrap_message_str(&**key) == X =>
    NotificationHint::X(unwrap_message_int(&**value)),
    &MessageItem::DictEntry(ref key, ref value) if
    unwrap_message_str(&**key) == Y =>
    NotificationHint::Y(unwrap_message_int(&**value)),
    &MessageItem::DictEntry(ref key, ref value) if
    unwrap_message_str(&**key) == URGENCY =>
    NotificationHint::Urgency(match unwrap_message_int(&**value) {
                                  0 => NotificationUrgency::Low,
                                  2 => NotificationUrgency::Critical,
                                  _ => NotificationUrgency::Normal,
                              }),
    &MessageItem::DictEntry(ref key, ref value) =>
    NotificationHint::Custom(unwrap_message_str(&**key),
                             unwrap_message_str(&**value)),
    foo@_ => {
        ::std::io::_print(::std::fmt::Arguments::new_v1_formatted({
                                                                      static __STATIC_FMTSTR:
                                                                             &'static [&'static str]
                                                                             =
                                                                          &["Invalid ",
                                                                            " \n"];
                                                                      __STATIC_FMTSTR
                                                                  },
                                                                  &match (&foo,)
                                                                       {
                                                                       (__arg0,)
                                                                       =>
                                                                       [::std::fmt::ArgumentV1::new(__arg0,
                                                                                                    ::std::fmt::Debug::fmt)],
                                                                   },
                                                                  {
                                                                      static __STATIC_FMTARGS:
                                                                             &'static [::std::fmt::rt::v1::Argument]
                                                                             =
                                                                          &[::std::fmt::rt::v1::Argument{position:
                                                                                                             ::std::fmt::rt::v1::Position::Next,
                                                                                                         format:
                                                                                                             ::std::fmt::rt::v1::FormatSpec{fill:
                                                                                                                                                ' ',
                                                                                                                                            align:
                                                                                                                                                ::std::fmt::rt::v1::Alignment::Unknown,
                                                                                                                                            flags:
                                                                                                                                                4u32,
                                                                                                                                            precision:
                                                                                                                                                ::std::fmt::rt::v1::Count::Implied,
                                                                                                                                            width:
                                                                                                                                                ::std::fmt::rt::v1::Count::Implied,},}];
                                                                      __STATIC_FMTARGS
                                                                  }));
        NotificationHint::Invalid
    }
})), id: 2862, rules: DefaultBlock, span: Span { lo: BytePos(35223), hi: BytePos(37674), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(35174), hi: BytePos(37674), expn_id: ExpnId(4294967295) } }]), vis: Inherited, span: Span { lo: BytePos(35116), hi: BytePos(37677), expn_id: ExpnId(4294967295) } }] }), vis: Public, span: Span { lo: BytePos(2788), hi: BytePos(2802), expn_id: ExpnId(4294967295) } }
Item { ident: #0, attrs: [Spanned { node: Attribute_ { id: AttrId(1248), style: Outer, value: Spanned { node: MetaWord("prelude_import"), span: Span { lo: BytePos(0), hi: BytePos(0), expn_id: ExpnId(216) } }, is_sugared_doc: false }, span: Span { lo: BytePos(0), hi: BytePos(0), expn_id: ExpnId(216) } }], id: 885, node: ItemUse(Spanned { node: ViewPathGlob(path(std::prelude::v1)), span: Span { lo: BytePos(0), hi: BytePos(0), expn_id: ExpnId(4294967295) } }), vis: Inherited, span: Span { lo: BytePos(0), hi: BytePos(0), expn_id: ExpnId(216) } }
Item { ident: #0, attrs: [], id: 886, node: ItemUse(Spanned { node: ViewPathSimple(MessageItem#0, path(dbus::MessageItem)), span: Span { lo: BytePos(28705), hi: BytePos(28722), expn_id: ExpnId(4294967295) } }), vis: Inherited, span: Span { lo: BytePos(28701), hi: BytePos(28723), expn_id: ExpnId(4294967295) } }
Item { ident: #0, attrs: [], id: 887, node: ItemUse(Spanned { node: ViewPathSimple(NotificationUrgency#0, path(super::NotificationUrgency)), span: Span { lo: BytePos(28728), hi: BytePos(28754), expn_id: ExpnId(4294967295) } }), vis: Inherited, span: Span { lo: BytePos(28724), hi: BytePos(28755), expn_id: ExpnId(4294967295) } }
Item { ident: #0, attrs: [], id: 888, node: ItemUse(Spanned { node: ViewPathGlob(path(util)), span: Span { lo: BytePos(28760), hi: BytePos(28768), expn_id: ExpnId(4294967295) } }), vis: Inherited, span: Span { lo: BytePos(28756), hi: BytePos(28768), expn_id: ExpnId(4294967295) } }
Item { ident: ACTION_ICONS#0, attrs: [], id: 889, node: ItemConst(type(&'static str), expr(893: "action-icons")), vis: Inherited, span: Span { lo: BytePos(28770), hi: BytePos(28821), expn_id: ExpnId(4294967295) } }
Item { ident: CATEGORY#0, attrs: [], id: 894, node: ItemConst(type(&'static str), expr(898: "category")), vis: Inherited, span: Span { lo: BytePos(28822), hi: BytePos(28869), expn_id: ExpnId(4294967295) } }
Item { ident: DESKTOP_ENTRY#0, attrs: [], id: 899, node: ItemConst(type(&'static str), expr(903: "desktop-entry")), vis: Inherited, span: Span { lo: BytePos(28870), hi: BytePos(28922), expn_id: ExpnId(4294967295) } }
Item { ident: IMAGE_PATH#0, attrs: [], id: 904, node: ItemConst(type(&'static str), expr(908: "image-path")), vis: Inherited, span: Span { lo: BytePos(28973), hi: BytePos(29022), expn_id: ExpnId(4294967295) } }
Item { ident: RESIDENT#0, attrs: [], id: 909, node: ItemConst(type(&'static str), expr(913: "resident")), vis: Inherited, span: Span { lo: BytePos(29072), hi: BytePos(29119), expn_id: ExpnId(4294967295) } }
Item { ident: SOUND_FILE#0, attrs: [], id: 914, node: ItemConst(type(&'static str), expr(918: "sound-file")), vis: Inherited, span: Span { lo: BytePos(29120), hi: BytePos(29169), expn_id: ExpnId(4294967295) } }
Item { ident: SOUND_NAME#0, attrs: [], id: 919, node: ItemConst(type(&'static str), expr(923: "sound-name")), vis: Inherited, span: Span { lo: BytePos(29170), hi: BytePos(29219), expn_id: ExpnId(4294967295) } }
Item { ident: SUPPRESS_SOUND#0, attrs: [], id: 924, node: ItemConst(type(&'static str), expr(928: "suppress-sound")), vis: Inherited, span: Span { lo: BytePos(29220), hi: BytePos(29273), expn_id: ExpnId(4294967295) } }
Item { ident: TRANSIENT#0, attrs: [], id: 929, node: ItemConst(type(&'static str), expr(933: "transient")), vis: Inherited, span: Span { lo: BytePos(29274), hi: BytePos(29322), expn_id: ExpnId(4294967295) } }
Item { ident: X#0, attrs: [], id: 934, node: ItemConst(type(&'static str), expr(938: "x")), vis: Inherited, span: Span { lo: BytePos(29323), hi: BytePos(29363), expn_id: ExpnId(4294967295) } }
Item { ident: Y#0, attrs: [], id: 939, node: ItemConst(type(&'static str), expr(943: "y")), vis: Inherited, span: Span { lo: BytePos(29364), hi: BytePos(29404), expn_id: ExpnId(4294967295) } }
Item { ident: URGENCY#0, attrs: [], id: 944, node: ItemConst(type(&'static str), expr(948: "urgency")), vis: Inherited, span: Span { lo: BytePos(29405), hi: BytePos(29451), expn_id: ExpnId(4294967295) } }
Item { ident: NotificationHint#0, attrs: [Spanned { node: Attribute_ { id: AttrId(91), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// All currently implemented NotificationHints that can be send.", CookedStr), span: Span { lo: BytePos(29453), hi: BytePos(29518), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(29453), hi: BytePos(29518), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(29453), hi: BytePos(29518), expn_id: ExpnId(4294967295) } }], id: 949, node: ItemEnum(EnumDef { variants: [Spanned { node: Variant_ { name: ActionIcons#0, attrs: [Spanned { node: Attribute_ { id: AttrId(93), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// If true, server may interpret action identifiers as named icons and display those.", CookedStr), span: Span { lo: BytePos(29658), hi: BytePos(29744), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(29658), hi: BytePos(29744), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(29658), hi: BytePos(29744), expn_id: ExpnId(4294967295) } }], data: Tuple([Spanned { node: StructField_ { kind: UnnamedField(Inherited), id: 950, ty: type(bool), attrs: [] }, span: Span { lo: BytePos(29761), hi: BytePos(29766), expn_id: ExpnId(4294967295) } }], 952), disr_expr: None }, span: Span { lo: BytePos(29749), hi: BytePos(29766), expn_id: ExpnId(4294967295) } }, Spanned { node: Variant_ { name: Category#0, attrs: [Spanned { node: Attribute_ { id: AttrId(94), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Check out:", CookedStr), span: Span { lo: BytePos(29773), hi: BytePos(29787), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(29773), hi: BytePos(29787), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(29773), hi: BytePos(29787), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(95), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("///", CookedStr), span: Span { lo: BytePos(29792), hi: BytePos(29795), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(29792), hi: BytePos(29795), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(29792), hi: BytePos(29795), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(96), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// * http://www.galago-project.org/specs/notification/0.9/x211.html", CookedStr), span: Span { lo: BytePos(29800), hi: BytePos(29868), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(29800), hi: BytePos(29868), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(29800), hi: BytePos(29868), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(97), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// * https://developer.gnome.org/notification-spec/#categories", CookedStr), span: Span { lo: BytePos(29873), hi: BytePos(29936), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(29873), hi: BytePos(29936), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(29873), hi: BytePos(29936), expn_id: ExpnId(4294967295) } }], data: Tuple([Spanned { node: StructField_ { kind: UnnamedField(Inherited), id: 953, ty: type(String), attrs: [] }, span: Span { lo: BytePos(29950), hi: BytePos(29957), expn_id: ExpnId(4294967295) } }], 955), disr_expr: None }, span: Span { lo: BytePos(29941), hi: BytePos(29957), expn_id: ExpnId(4294967295) } }, Spanned { node: Variant_ { name: DesktopEntry#0, attrs: [Spanned { node: Attribute_ { id: AttrId(98), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Name of the DesktopEntry representing the calling application. In case of \"firefox.desktop\"", CookedStr), span: Span { lo: BytePos(29964), hi: BytePos(30059), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(29964), hi: BytePos(30059), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(29964), hi: BytePos(30059), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(99), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// use \"firefox\". May be used to retrieve the correct icon.", CookedStr), span: Span { lo: BytePos(30064), hi: BytePos(30124), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(30064), hi: BytePos(30124), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(30064), hi: BytePos(30124), expn_id: ExpnId(4294967295) } }], data: Tuple([Spanned { node: StructField_ { kind: UnnamedField(Inherited), id: 956, ty: type(String), attrs: [] }, span: Span { lo: BytePos(30142), hi: BytePos(30149), expn_id: ExpnId(4294967295) } }], 958), disr_expr: None }, span: Span { lo: BytePos(30129), hi: BytePos(30149), expn_id: ExpnId(4294967295) } }, Spanned { node: Variant_ { name: ImagePath#0, attrs: [Spanned { node: Attribute_ { id: AttrId(100), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Display the image at this path.", CookedStr), span: Span { lo: BytePos(30248), hi: BytePos(30283), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(30248), hi: BytePos(30283), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(30248), hi: BytePos(30283), expn_id: ExpnId(4294967295) } }], data: Tuple([Spanned { node: StructField_ { kind: UnnamedField(Inherited), id: 959, ty: type(String), attrs: [] }, span: Span { lo: BytePos(30298), hi: BytePos(30305), expn_id: ExpnId(4294967295) } }], 961), disr_expr: None }, span: Span { lo: BytePos(30288), hi: BytePos(30305), expn_id: ExpnId(4294967295) } }, Spanned { node: Variant_ { name: Resident#0, attrs: [Spanned { node: Attribute_ { id: AttrId(101), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// This does not work on all servers, however timeout=0 will do the job", CookedStr), span: Span { lo: BytePos(30312), hi: BytePos(30384), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(30312), hi: BytePos(30384), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(30312), hi: BytePos(30384), expn_id: ExpnId(4294967295) } }], data: Tuple([Spanned { node: StructField_ { kind: UnnamedField(Inherited), id: 962, ty: type(bool), attrs: [] }, span: Span { lo: BytePos(30398), hi: BytePos(30403), expn_id: ExpnId(4294967295) } }], 964), disr_expr: None }, span: Span { lo: BytePos(30389), hi: BytePos(30403), expn_id: ExpnId(4294967295) } }, Spanned { node: Variant_ { name: SoundFile#0, attrs: [Spanned { node: Attribute_ { id: AttrId(102), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Play the sound at this path.", CookedStr), span: Span { lo: BytePos(30410), hi: BytePos(30442), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(30410), hi: BytePos(30442), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(30410), hi: BytePos(30442), expn_id: ExpnId(4294967295) } }], data: Tuple([Spanned { node: StructField_ { kind: UnnamedField(Inherited), id: 965, ty: type(String), attrs: [] }, span: Span { lo: BytePos(30457), hi: BytePos(30464), expn_id: ExpnId(4294967295) } }], 967), disr_expr: None }, span: Span { lo: BytePos(30447), hi: BytePos(30464), expn_id: ExpnId(4294967295) } }, Spanned { node: Variant_ { name: SoundName#0, attrs: [Spanned { node: Attribute_ { id: AttrId(103), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// \tA themeable named sound from the freedesktop.org [sound naming specification](http://0pointer.de/public/sound-naming-spec.html) to play when the notification pops up. Similar to icon-name, only for sounds. An example would be \"message-new-instant\".", CookedStr), span: Span { lo: BytePos(30471), hi: BytePos(30724), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(30471), hi: BytePos(30724), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(30471), hi: BytePos(30724), expn_id: ExpnId(4294967295) } }], data: Tuple([Spanned { node: StructField_ { kind: UnnamedField(Inherited), id: 968, ty: type(String), attrs: [] }, span: Span { lo: BytePos(30739), hi: BytePos(30746), expn_id: ExpnId(4294967295) } }], 970), disr_expr: None }, span: Span { lo: BytePos(30729), hi: BytePos(30746), expn_id: ExpnId(4294967295) } }, Spanned { node: Variant_ { name: SuppressSound#0, attrs: [Spanned { node: Attribute_ { id: AttrId(104), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Suppress the notification sound.", CookedStr), span: Span { lo: BytePos(30753), hi: BytePos(30789), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(30753), hi: BytePos(30789), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(30753), hi: BytePos(30789), expn_id: ExpnId(4294967295) } }], data: Tuple([Spanned { node: StructField_ { kind: UnnamedField(Inherited), id: 971, ty: type(bool), attrs: [] }, span: Span { lo: BytePos(30808), hi: BytePos(30813), expn_id: ExpnId(4294967295) } }], 973), disr_expr: None }, span: Span { lo: BytePos(30794), hi: BytePos(30813), expn_id: ExpnId(4294967295) } }, Spanned { node: Variant_ { name: Transient#0, attrs: [Spanned { node: Attribute_ { id: AttrId(105), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// When set the server will treat the notification as transient and by-pass the server\'s persistence capability, if it should exist. When set the server will treat the notification as transient and by-pass the server\'s persistence capability, if it should exist.", CookedStr), span: Span { lo: BytePos(30820), hi: BytePos(31083), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(30820), hi: BytePos(31083), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(30820), hi: BytePos(31083), expn_id: ExpnId(4294967295) } }], data: Tuple([Spanned { node: StructField_ { kind: UnnamedField(Inherited), id: 974, ty: type(bool), attrs: [] }, span: Span { lo: BytePos(31098), hi: BytePos(31103), expn_id: ExpnId(4294967295) } }], 976), disr_expr: None }, span: Span { lo: BytePos(31088), hi: BytePos(31103), expn_id: ExpnId(4294967295) } }, Spanned { node: Variant_ { name: X#0, attrs: [Spanned { node: Attribute_ { id: AttrId(106), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Lets the notification point to a certain \'x\' position on the screen.", CookedStr), span: Span { lo: BytePos(31110), hi: BytePos(31182), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(31110), hi: BytePos(31182), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(31110), hi: BytePos(31182), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(107), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Requires `Y`.", CookedStr), span: Span { lo: BytePos(31187), hi: BytePos(31204), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(31187), hi: BytePos(31204), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(31187), hi: BytePos(31204), expn_id: ExpnId(4294967295) } }], data: Tuple([Spanned { node: StructField_ { kind: UnnamedField(Inherited), id: 977, ty: type(i32), attrs: [] }, span: Span { lo: BytePos(31211), hi: BytePos(31215), expn_id: ExpnId(4294967295) } }], 979), disr_expr: None }, span: Span { lo: BytePos(31209), hi: BytePos(31215), expn_id: ExpnId(4294967295) } }, Spanned { node: Variant_ { name: Y#0, attrs: [Spanned { node: Attribute_ { id: AttrId(108), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Lets the notification point to a certain \'y\' position on the screen.", CookedStr), span: Span { lo: BytePos(31222), hi: BytePos(31294), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(31222), hi: BytePos(31294), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(31222), hi: BytePos(31294), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(109), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Requires `X`.", CookedStr), span: Span { lo: BytePos(31299), hi: BytePos(31316), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(31299), hi: BytePos(31316), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(31299), hi: BytePos(31316), expn_id: ExpnId(4294967295) } }], data: Tuple([Spanned { node: StructField_ { kind: UnnamedField(Inherited), id: 980, ty: type(i32), attrs: [] }, span: Span { lo: BytePos(31323), hi: BytePos(31327), expn_id: ExpnId(4294967295) } }], 982), disr_expr: None }, span: Span { lo: BytePos(31321), hi: BytePos(31327), expn_id: ExpnId(4294967295) } }, Spanned { node: Variant_ { name: Urgency#0, attrs: [Spanned { node: Attribute_ { id: AttrId(110), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Pass me a NotificationUrgency, either Low, Normal or Critical", CookedStr), span: Span { lo: BytePos(31334), hi: BytePos(31399), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(31334), hi: BytePos(31399), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(31334), hi: BytePos(31399), expn_id: ExpnId(4294967295) } }], data: Tuple([Spanned { node: StructField_ { kind: UnnamedField(Inherited), id: 983, ty: type(NotificationUrgency), attrs: [] }, span: Span { lo: BytePos(31412), hi: BytePos(31432), expn_id: ExpnId(4294967295) } }], 985), disr_expr: None }, span: Span { lo: BytePos(31404), hi: BytePos(31432), expn_id: ExpnId(4294967295) } }, Spanned { node: Variant_ { name: Custom#0, attrs: [Spanned { node: Attribute_ { id: AttrId(111), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// If you want to pass something entirely different.", CookedStr), span: Span { lo: BytePos(31439), hi: BytePos(31492), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(31439), hi: BytePos(31492), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(31439), hi: BytePos(31492), expn_id: ExpnId(4294967295) } }], data: Tuple([Spanned { node: StructField_ { kind: UnnamedField(Inherited), id: 986, ty: type(String), attrs: [] }, span: Span { lo: BytePos(31504), hi: BytePos(31511), expn_id: ExpnId(4294967295) } }, Spanned { node: StructField_ { kind: UnnamedField(Inherited), id: 988, ty: type(String), attrs: [] }, span: Span { lo: BytePos(31511), hi: BytePos(31518), expn_id: ExpnId(4294967295) } }], 990), disr_expr: None }, span: Span { lo: BytePos(31497), hi: BytePos(31518), expn_id: ExpnId(4294967295) } }, Spanned { node: Variant_ { name: Invalid#0, attrs: [Spanned { node: Attribute_ { id: AttrId(112), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Only used by this NotificationServer implementation", CookedStr), span: Span { lo: BytePos(31525), hi: BytePos(31580), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(31525), hi: BytePos(31580), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(31525), hi: BytePos(31580), expn_id: ExpnId(4294967295) } }], data: Unit(991), disr_expr: None }, span: Span { lo: BytePos(31585), hi: BytePos(31592), expn_id: ExpnId(4294967295) } }] }, Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 992, predicates: [] } }), vis: Public, span: Span { lo: BytePos(29564), hi: BytePos(31633), expn_id: ExpnId(4294967295) } }
Item { ident: NotificationHint.::std::fmt::Debug#0, attrs: [Spanned { node: Attribute_ { id: AttrId(1194), style: Outer, value: Spanned { node: MetaWord("automatically_derived"), span: Span { lo: BytePos(29556), hi: BytePos(29561), expn_id: ExpnId(37) } }, is_sugared_doc: false }, span: Span { lo: BytePos(29556), hi: BytePos(29561), expn_id: ExpnId(37) } }, Spanned { node: Attribute_ { id: AttrId(1195), style: Outer, value: Spanned { node: MetaList("allow", [Spanned { node: MetaWord("unused_qualifications"), span: Span { lo: BytePos(29556), hi: BytePos(29561), expn_id: ExpnId(37) } }]), span: Span { lo: BytePos(29556), hi: BytePos(29561), expn_id: ExpnId(37) } }, is_sugared_doc: false }, span: Span { lo: BytePos(29556), hi: BytePos(29561), expn_id: ExpnId(37) } }], id: 993, node: ItemImpl(Normal, "positive", Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 1347, predicates: [] } }, Some(TraitRef { path: path(::std::fmt::Debug), ref_id: 1346 }), type(NotificationHint), [ImplItem { id: 994, ident: fmt#0, vis: Inherited, attrs: [], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(997: self), id: 996 }, Arg { ty: type(&mut ::std::fmt::Formatter), pat: pat(1000: __arg_0), id: 999 }], output: Return(type(::std::fmt::Result)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 995, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutImmutable, self#0), span: Span { lo: BytePos(29556), hi: BytePos(29561), expn_id: ExpnId(37) } } }, Block { stmts: [], expr: Some(expr(1005: match (&*self,) {
    (&NotificationHint::ActionIcons(ref __self_0),) => {
        let mut builder = __arg_0.debug_tuple("ActionIcons");
        let _ = builder.field(&&(*__self_0));
        builder.finish()
    }
    (&NotificationHint::Category(ref __self_0),) => {
        let mut builder = __arg_0.debug_tuple("Category");
        let _ = builder.field(&&(*__self_0));
        builder.finish()
    }
    (&NotificationHint::DesktopEntry(ref __self_0),) => {
        let mut builder = __arg_0.debug_tuple("DesktopEntry");
        let _ = builder.field(&&(*__self_0));
        builder.finish()
    }
    (&NotificationHint::ImagePath(ref __self_0),) => {
        let mut builder = __arg_0.debug_tuple("ImagePath");
        let _ = builder.field(&&(*__self_0));
        builder.finish()
    }
    (&NotificationHint::Resident(ref __self_0),) => {
        let mut builder = __arg_0.debug_tuple("Resident");
        let _ = builder.field(&&(*__self_0));
        builder.finish()
    }
    (&NotificationHint::SoundFile(ref __self_0),) => {
        let mut builder = __arg_0.debug_tuple("SoundFile");
        let _ = builder.field(&&(*__self_0));
        builder.finish()
    }
    (&NotificationHint::SoundName(ref __self_0),) => {
        let mut builder = __arg_0.debug_tuple("SoundName");
        let _ = builder.field(&&(*__self_0));
        builder.finish()
    }
    (&NotificationHint::SuppressSound(ref __self_0),) => {
        let mut builder = __arg_0.debug_tuple("SuppressSound");
        let _ = builder.field(&&(*__self_0));
        builder.finish()
    }
    (&NotificationHint::Transient(ref __self_0),) => {
        let mut builder = __arg_0.debug_tuple("Transient");
        let _ = builder.field(&&(*__self_0));
        builder.finish()
    }
    (&NotificationHint::X(ref __self_0),) => {
        let mut builder = __arg_0.debug_tuple("X");
        let _ = builder.field(&&(*__self_0));
        builder.finish()
    }
    (&NotificationHint::Y(ref __self_0),) => {
        let mut builder = __arg_0.debug_tuple("Y");
        let _ = builder.field(&&(*__self_0));
        builder.finish()
    }
    (&NotificationHint::Urgency(ref __self_0),) => {
        let mut builder = __arg_0.debug_tuple("Urgency");
        let _ = builder.field(&&(*__self_0));
        builder.finish()
    }
    (&NotificationHint::Custom(ref __self_0, ref __self_1),) => {
        let mut builder = __arg_0.debug_tuple("Custom");
        let _ = builder.field(&&(*__self_0));
        let _ = builder.field(&&(*__self_1));
        builder.finish()
    }
    (&NotificationHint::Invalid,) => {
        let mut builder = __arg_0.debug_tuple("Invalid");
        builder.finish()
    }
})), id: 1004, rules: DefaultBlock, span: Span { lo: BytePos(29556), hi: BytePos(29561), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(29556), hi: BytePos(29561), expn_id: ExpnId(37) } }]), vis: Inherited, span: Span { lo: BytePos(29556), hi: BytePos(29561), expn_id: ExpnId(37) } }
Item { ident: NotificationHint.::std::clone::Clone#0, attrs: [Spanned { node: Attribute_ { id: AttrId(1197), style: Outer, value: Spanned { node: MetaWord("automatically_derived"), span: Span { lo: BytePos(29549), hi: BytePos(29554), expn_id: ExpnId(52) } }, is_sugared_doc: false }, span: Span { lo: BytePos(29549), hi: BytePos(29554), expn_id: ExpnId(52) } }, Spanned { node: Attribute_ { id: AttrId(1198), style: Outer, value: Spanned { node: MetaList("allow", [Spanned { node: MetaWord("unused_qualifications"), span: Span { lo: BytePos(29549), hi: BytePos(29554), expn_id: ExpnId(52) } }]), span: Span { lo: BytePos(29549), hi: BytePos(29554), expn_id: ExpnId(52) } }, is_sugared_doc: false }, span: Span { lo: BytePos(29549), hi: BytePos(29554), expn_id: ExpnId(52) } }], id: 1349, node: ItemImpl(Normal, "positive", Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 1530, predicates: [] } }, Some(TraitRef { path: path(::std::clone::Clone), ref_id: 1529 }), type(NotificationHint), [ImplItem { id: 1350, ident: clone#0, vis: Inherited, attrs: [Spanned { node: Attribute_ { id: AttrId(1196), style: Outer, value: Spanned { node: MetaWord("inline"), span: Span { lo: BytePos(29549), hi: BytePos(29554), expn_id: ExpnId(4294967295) } }, is_sugared_doc: false }, span: Span { lo: BytePos(29549), hi: BytePos(29554), expn_id: ExpnId(4294967295) } }], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(1353: self), id: 1352 }], output: Return(type(NotificationHint)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 1351, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutImmutable, self#0), span: Span { lo: BytePos(29549), hi: BytePos(29554), expn_id: ExpnId(52) } } }, Block { stmts: [], expr: Some(expr(1357: match (&*self,) {
    (&NotificationHint::ActionIcons(ref __self_0),) =>
    NotificationHint::ActionIcons(::std::clone::Clone::clone(&(*__self_0))),
    (&NotificationHint::Category(ref __self_0),) =>
    NotificationHint::Category(::std::clone::Clone::clone(&(*__self_0))),
    (&NotificationHint::DesktopEntry(ref __self_0),) =>
    NotificationHint::DesktopEntry(::std::clone::Clone::clone(&(*__self_0))),
    (&NotificationHint::ImagePath(ref __self_0),) =>
    NotificationHint::ImagePath(::std::clone::Clone::clone(&(*__self_0))),
    (&NotificationHint::Resident(ref __self_0),) =>
    NotificationHint::Resident(::std::clone::Clone::clone(&(*__self_0))),
    (&NotificationHint::SoundFile(ref __self_0),) =>
    NotificationHint::SoundFile(::std::clone::Clone::clone(&(*__self_0))),
    (&NotificationHint::SoundName(ref __self_0),) =>
    NotificationHint::SoundName(::std::clone::Clone::clone(&(*__self_0))),
    (&NotificationHint::SuppressSound(ref __self_0),) =>
    NotificationHint::SuppressSound(::std::clone::Clone::clone(&(*__self_0))),
    (&NotificationHint::Transient(ref __self_0),) =>
    NotificationHint::Transient(::std::clone::Clone::clone(&(*__self_0))),
    (&NotificationHint::X(ref __self_0),) =>
    NotificationHint::X(::std::clone::Clone::clone(&(*__self_0))),
    (&NotificationHint::Y(ref __self_0),) =>
    NotificationHint::Y(::std::clone::Clone::clone(&(*__self_0))),
    (&NotificationHint::Urgency(ref __self_0),) =>
    NotificationHint::Urgency(::std::clone::Clone::clone(&(*__self_0))),
    (&NotificationHint::Custom(ref __self_0, ref __self_1),) =>
    NotificationHint::Custom(::std::clone::Clone::clone(&(*__self_0)),
                             ::std::clone::Clone::clone(&(*__self_1))),
    (&NotificationHint::Invalid,) => NotificationHint::Invalid,
})), id: 1356, rules: DefaultBlock, span: Span { lo: BytePos(29549), hi: BytePos(29554), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(29549), hi: BytePos(29554), expn_id: ExpnId(52) } }]), vis: Inherited, span: Span { lo: BytePos(29549), hi: BytePos(29554), expn_id: ExpnId(52) } }
Item { ident: NotificationHint.::std::hash::Hash#0, attrs: [Spanned { node: Attribute_ { id: AttrId(1199), style: Outer, value: Spanned { node: MetaWord("automatically_derived"), span: Span { lo: BytePos(29543), hi: BytePos(29547), expn_id: ExpnId(67) } }, is_sugared_doc: false }, span: Span { lo: BytePos(29543), hi: BytePos(29547), expn_id: ExpnId(67) } }, Spanned { node: Attribute_ { id: AttrId(1200), style: Outer, value: Spanned { node: MetaList("allow", [Spanned { node: MetaWord("unused_qualifications"), span: Span { lo: BytePos(29543), hi: BytePos(29547), expn_id: ExpnId(67) } }]), span: Span { lo: BytePos(29543), hi: BytePos(29547), expn_id: ExpnId(67) } }, is_sugared_doc: false }, span: Span { lo: BytePos(29543), hi: BytePos(29547), expn_id: ExpnId(67) } }], id: 1532, node: ItemImpl(Normal, "positive", Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 1832, predicates: [] } }, Some(TraitRef { path: path(::std::hash::Hash), ref_id: 1831 }), type(NotificationHint), [ImplItem { id: 1533, ident: hash#0, vis: Inherited, attrs: [], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(1538: self), id: 1537 }, Arg { ty: type(&mut __H), pat: pat(1541: __arg_0), id: 1540 }], output: Return(type(())), variadic: false }, generics: Generics { lifetimes: [], ty_params: [TyParam { ident: __H#0, id: 1534, bounds: [TraitTyParamBound(PolyTraitRef { bound_lifetimes: [], trait_ref: TraitRef { path: path(::std::hash::Hasher), ref_id: 1535 }, span: Span { lo: BytePos(29543), hi: BytePos(29547), expn_id: ExpnId(67) } }, None)], default: None, span: Span { lo: BytePos(29543), hi: BytePos(29547), expn_id: ExpnId(4294967295) } }], where_clause: WhereClause { id: 1536, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutImmutable, self#0), span: Span { lo: BytePos(29543), hi: BytePos(29547), expn_id: ExpnId(67) } } }, Block { stmts: [], expr: Some(expr(1546: match (&*self,) {
    (&NotificationHint::ActionIcons(ref __self_0),) => {
        ::std::hash::Hash::hash(&0usize, __arg_0);
        ::std::hash::Hash::hash(&(*__self_0), __arg_0);
    }
    (&NotificationHint::Category(ref __self_0),) => {
        ::std::hash::Hash::hash(&1usize, __arg_0);
        ::std::hash::Hash::hash(&(*__self_0), __arg_0);
    }
    (&NotificationHint::DesktopEntry(ref __self_0),) => {
        ::std::hash::Hash::hash(&2usize, __arg_0);
        ::std::hash::Hash::hash(&(*__self_0), __arg_0);
    }
    (&NotificationHint::ImagePath(ref __self_0),) => {
        ::std::hash::Hash::hash(&3usize, __arg_0);
        ::std::hash::Hash::hash(&(*__self_0), __arg_0);
    }
    (&NotificationHint::Resident(ref __self_0),) => {
        ::std::hash::Hash::hash(&4usize, __arg_0);
        ::std::hash::Hash::hash(&(*__self_0), __arg_0);
    }
    (&NotificationHint::SoundFile(ref __self_0),) => {
        ::std::hash::Hash::hash(&5usize, __arg_0);
        ::std::hash::Hash::hash(&(*__self_0), __arg_0);
    }
    (&NotificationHint::SoundName(ref __self_0),) => {
        ::std::hash::Hash::hash(&6usize, __arg_0);
        ::std::hash::Hash::hash(&(*__self_0), __arg_0);
    }
    (&NotificationHint::SuppressSound(ref __self_0),) => {
        ::std::hash::Hash::hash(&7usize, __arg_0);
        ::std::hash::Hash::hash(&(*__self_0), __arg_0);
    }
    (&NotificationHint::Transient(ref __self_0),) => {
        ::std::hash::Hash::hash(&8usize, __arg_0);
        ::std::hash::Hash::hash(&(*__self_0), __arg_0);
    }
    (&NotificationHint::X(ref __self_0),) => {
        ::std::hash::Hash::hash(&9usize, __arg_0);
        ::std::hash::Hash::hash(&(*__self_0), __arg_0);
    }
    (&NotificationHint::Y(ref __self_0),) => {
        ::std::hash::Hash::hash(&10usize, __arg_0);
        ::std::hash::Hash::hash(&(*__self_0), __arg_0);
    }
    (&NotificationHint::Urgency(ref __self_0),) => {
        ::std::hash::Hash::hash(&11usize, __arg_0);
        ::std::hash::Hash::hash(&(*__self_0), __arg_0);
    }
    (&NotificationHint::Custom(ref __self_0, ref __self_1),) => {
        ::std::hash::Hash::hash(&12usize, __arg_0);
        ::std::hash::Hash::hash(&(*__self_0), __arg_0);
        ::std::hash::Hash::hash(&(*__self_1), __arg_0);
    }
    (&NotificationHint::Invalid,) => {
        ::std::hash::Hash::hash(&13usize, __arg_0);
    }
})), id: 1545, rules: DefaultBlock, span: Span { lo: BytePos(29543), hi: BytePos(29547), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(29543), hi: BytePos(29547), expn_id: ExpnId(67) } }]), vis: Inherited, span: Span { lo: BytePos(29543), hi: BytePos(29547), expn_id: ExpnId(67) } }
Item { ident: NotificationHint.::std::cmp::PartialEq#0, attrs: [Spanned { node: Attribute_ { id: AttrId(1203), style: Outer, value: Spanned { node: MetaWord("automatically_derived"), span: Span { lo: BytePos(29532), hi: BytePos(29541), expn_id: ExpnId(82) } }, is_sugared_doc: false }, span: Span { lo: BytePos(29532), hi: BytePos(29541), expn_id: ExpnId(82) } }, Spanned { node: Attribute_ { id: AttrId(1204), style: Outer, value: Spanned { node: MetaList("allow", [Spanned { node: MetaWord("unused_qualifications"), span: Span { lo: BytePos(29532), hi: BytePos(29541), expn_id: ExpnId(82) } }]), span: Span { lo: BytePos(29532), hi: BytePos(29541), expn_id: ExpnId(82) } }, is_sugared_doc: false }, span: Span { lo: BytePos(29532), hi: BytePos(29541), expn_id: ExpnId(82) } }], id: 1834, node: ItemImpl(Normal, "positive", Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 2404, predicates: [] } }, Some(TraitRef { path: path(::std::cmp::PartialEq), ref_id: 2403 }), type(NotificationHint), [ImplItem { id: 1835, ident: eq#0, vis: Inherited, attrs: [Spanned { node: Attribute_ { id: AttrId(1201), style: Outer, value: Spanned { node: MetaWord("inline"), span: Span { lo: BytePos(29532), hi: BytePos(29541), expn_id: ExpnId(4294967295) } }, is_sugared_doc: false }, span: Span { lo: BytePos(29532), hi: BytePos(29541), expn_id: ExpnId(4294967295) } }], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(1838: self), id: 1837 }, Arg { ty: type(&NotificationHint), pat: pat(1841: __arg_0), id: 1840 }], output: Return(type(bool)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 1836, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutImmutable, self#0), span: Span { lo: BytePos(29532), hi: BytePos(29541), expn_id: ExpnId(82) } } }, Block { stmts: [], expr: Some(expr(1846: {
    let __self_vi =
        unsafe { ::std::intrinsics::discriminant_value(&*self) } as i32;
    let __arg_1_vi =
        unsafe { ::std::intrinsics::discriminant_value(&*__arg_0) } as i32;
    if true && __self_vi == __arg_1_vi {
        match (&*self, &*__arg_0) {
            (&NotificationHint::ActionIcons(ref __self_0),
             &NotificationHint::ActionIcons(ref __arg_1_0)) =>
            true && (*__self_0) == (*__arg_1_0),
            (&NotificationHint::Category(ref __self_0),
             &NotificationHint::Category(ref __arg_1_0)) =>
            true && (*__self_0) == (*__arg_1_0),
            (&NotificationHint::DesktopEntry(ref __self_0),
             &NotificationHint::DesktopEntry(ref __arg_1_0)) =>
            true && (*__self_0) == (*__arg_1_0),
            (&NotificationHint::ImagePath(ref __self_0),
             &NotificationHint::ImagePath(ref __arg_1_0)) =>
            true && (*__self_0) == (*__arg_1_0),
            (&NotificationHint::Resident(ref __self_0),
             &NotificationHint::Resident(ref __arg_1_0)) =>
            true && (*__self_0) == (*__arg_1_0),
            (&NotificationHint::SoundFile(ref __self_0),
             &NotificationHint::SoundFile(ref __arg_1_0)) =>
            true && (*__self_0) == (*__arg_1_0),
            (&NotificationHint::SoundName(ref __self_0),
             &NotificationHint::SoundName(ref __arg_1_0)) =>
            true && (*__self_0) == (*__arg_1_0),
            (&NotificationHint::SuppressSound(ref __self_0),
             &NotificationHint::SuppressSound(ref __arg_1_0)) =>
            true && (*__self_0) == (*__arg_1_0),
            (&NotificationHint::Transient(ref __self_0),
             &NotificationHint::Transient(ref __arg_1_0)) =>
            true && (*__self_0) == (*__arg_1_0),
            (&NotificationHint::X(ref __self_0),
             &NotificationHint::X(ref __arg_1_0)) =>
            true && (*__self_0) == (*__arg_1_0),
            (&NotificationHint::Y(ref __self_0),
             &NotificationHint::Y(ref __arg_1_0)) =>
            true && (*__self_0) == (*__arg_1_0),
            (&NotificationHint::Urgency(ref __self_0),
             &NotificationHint::Urgency(ref __arg_1_0)) =>
            true && (*__self_0) == (*__arg_1_0),
            (&NotificationHint::Custom(ref __self_0, ref __self_1),
             &NotificationHint::Custom(ref __arg_1_0, ref __arg_1_1)) =>
            true && (*__self_0) == (*__arg_1_0) &&
                (*__self_1) == (*__arg_1_1),
            (&NotificationHint::Invalid, &NotificationHint::Invalid) => true,
            _ => unsafe { ::std::intrinsics::unreachable() }
        }
    } else { false }
})), id: 1845, rules: DefaultBlock, span: Span { lo: BytePos(29532), hi: BytePos(29541), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(29532), hi: BytePos(29541), expn_id: ExpnId(82) } }, ImplItem { id: 2119, ident: ne#0, vis: Inherited, attrs: [Spanned { node: Attribute_ { id: AttrId(1202), style: Outer, value: Spanned { node: MetaWord("inline"), span: Span { lo: BytePos(29532), hi: BytePos(29541), expn_id: ExpnId(4294967295) } }, is_sugared_doc: false }, span: Span { lo: BytePos(29532), hi: BytePos(29541), expn_id: ExpnId(4294967295) } }], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(2122: self), id: 2121 }, Arg { ty: type(&NotificationHint), pat: pat(2125: __arg_0), id: 2124 }], output: Return(type(bool)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 2120, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutImmutable, self#0), span: Span { lo: BytePos(29532), hi: BytePos(29541), expn_id: ExpnId(82) } } }, Block { stmts: [], expr: Some(expr(2130: {
    let __self_vi =
        unsafe { ::std::intrinsics::discriminant_value(&*self) } as i32;
    let __arg_1_vi =
        unsafe { ::std::intrinsics::discriminant_value(&*__arg_0) } as i32;
    if true && __self_vi == __arg_1_vi {
        match (&*self, &*__arg_0) {
            (&NotificationHint::ActionIcons(ref __self_0),
             &NotificationHint::ActionIcons(ref __arg_1_0)) =>
            false || (*__self_0) != (*__arg_1_0),
            (&NotificationHint::Category(ref __self_0),
             &NotificationHint::Category(ref __arg_1_0)) =>
            false || (*__self_0) != (*__arg_1_0),
            (&NotificationHint::DesktopEntry(ref __self_0),
             &NotificationHint::DesktopEntry(ref __arg_1_0)) =>
            false || (*__self_0) != (*__arg_1_0),
            (&NotificationHint::ImagePath(ref __self_0),
             &NotificationHint::ImagePath(ref __arg_1_0)) =>
            false || (*__self_0) != (*__arg_1_0),
            (&NotificationHint::Resident(ref __self_0),
             &NotificationHint::Resident(ref __arg_1_0)) =>
            false || (*__self_0) != (*__arg_1_0),
            (&NotificationHint::SoundFile(ref __self_0),
             &NotificationHint::SoundFile(ref __arg_1_0)) =>
            false || (*__self_0) != (*__arg_1_0),
            (&NotificationHint::SoundName(ref __self_0),
             &NotificationHint::SoundName(ref __arg_1_0)) =>
            false || (*__self_0) != (*__arg_1_0),
            (&NotificationHint::SuppressSound(ref __self_0),
             &NotificationHint::SuppressSound(ref __arg_1_0)) =>
            false || (*__self_0) != (*__arg_1_0),
            (&NotificationHint::Transient(ref __self_0),
             &NotificationHint::Transient(ref __arg_1_0)) =>
            false || (*__self_0) != (*__arg_1_0),
            (&NotificationHint::X(ref __self_0),
             &NotificationHint::X(ref __arg_1_0)) =>
            false || (*__self_0) != (*__arg_1_0),
            (&NotificationHint::Y(ref __self_0),
             &NotificationHint::Y(ref __arg_1_0)) =>
            false || (*__self_0) != (*__arg_1_0),
            (&NotificationHint::Urgency(ref __self_0),
             &NotificationHint::Urgency(ref __arg_1_0)) =>
            false || (*__self_0) != (*__arg_1_0),
            (&NotificationHint::Custom(ref __self_0, ref __self_1),
             &NotificationHint::Custom(ref __arg_1_0, ref __arg_1_1)) =>
            false || (*__self_0) != (*__arg_1_0) ||
                (*__self_1) != (*__arg_1_1),
            (&NotificationHint::Invalid, &NotificationHint::Invalid) => false,
            _ => unsafe { ::std::intrinsics::unreachable() }
        }
    } else { true }
})), id: 2129, rules: DefaultBlock, span: Span { lo: BytePos(29532), hi: BytePos(29541), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(29532), hi: BytePos(29541), expn_id: ExpnId(82) } }]), vis: Inherited, span: Span { lo: BytePos(29532), hi: BytePos(29541), expn_id: ExpnId(82) } }
Item { ident: NotificationHint.::std::cmp::Eq#0, attrs: [Spanned { node: Attribute_ { id: AttrId(1207), style: Outer, value: Spanned { node: MetaWord("automatically_derived"), span: Span { lo: BytePos(29528), hi: BytePos(29530), expn_id: ExpnId(139) } }, is_sugared_doc: false }, span: Span { lo: BytePos(29528), hi: BytePos(29530), expn_id: ExpnId(139) } }, Spanned { node: Attribute_ { id: AttrId(1208), style: Outer, value: Spanned { node: MetaList("allow", [Spanned { node: MetaWord("unused_qualifications"), span: Span { lo: BytePos(29528), hi: BytePos(29530), expn_id: ExpnId(139) } }]), span: Span { lo: BytePos(29528), hi: BytePos(29530), expn_id: ExpnId(139) } }, is_sugared_doc: false }, span: Span { lo: BytePos(29528), hi: BytePos(29530), expn_id: ExpnId(139) } }], id: 2406, node: ItemImpl(Normal, "positive", Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 2574, predicates: [] } }, Some(TraitRef { path: path(::std::cmp::Eq), ref_id: 2573 }), type(NotificationHint), [ImplItem { id: 2407, ident: assert_receiver_is_total_eq#0, vis: Inherited, attrs: [Spanned { node: Attribute_ { id: AttrId(1205), style: Outer, value: Spanned { node: MetaWord("inline"), span: Span { lo: BytePos(29528), hi: BytePos(29530), expn_id: ExpnId(4294967295) } }, is_sugared_doc: false }, span: Span { lo: BytePos(29528), hi: BytePos(29530), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(1206), style: Outer, value: Spanned { node: MetaList("doc", [Spanned { node: MetaWord("hidden"), span: Span { lo: BytePos(29528), hi: BytePos(29530), expn_id: ExpnId(4294967295) } }]), span: Span { lo: BytePos(29528), hi: BytePos(29530), expn_id: ExpnId(4294967295) } }, is_sugared_doc: false }, span: Span { lo: BytePos(29528), hi: BytePos(29530), expn_id: ExpnId(4294967295) } }], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(2410: self), id: 2409 }], output: Return(type(())), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 2408, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutImmutable, self#0), span: Span { lo: BytePos(29528), hi: BytePos(29530), expn_id: ExpnId(139) } } }, Block { stmts: [], expr: Some(expr(2414: match (&*self,) {
    (&NotificationHint::ActionIcons(ref __self_0),) => {
        (*__self_0).assert_receiver_is_total_eq();
    }
    (&NotificationHint::Category(ref __self_0),) => {
        (*__self_0).assert_receiver_is_total_eq();
    }
    (&NotificationHint::DesktopEntry(ref __self_0),) => {
        (*__self_0).assert_receiver_is_total_eq();
    }
    (&NotificationHint::ImagePath(ref __self_0),) => {
        (*__self_0).assert_receiver_is_total_eq();
    }
    (&NotificationHint::Resident(ref __self_0),) => {
        (*__self_0).assert_receiver_is_total_eq();
    }
    (&NotificationHint::SoundFile(ref __self_0),) => {
        (*__self_0).assert_receiver_is_total_eq();
    }
    (&NotificationHint::SoundName(ref __self_0),) => {
        (*__self_0).assert_receiver_is_total_eq();
    }
    (&NotificationHint::SuppressSound(ref __self_0),) => {
        (*__self_0).assert_receiver_is_total_eq();
    }
    (&NotificationHint::Transient(ref __self_0),) => {
        (*__self_0).assert_receiver_is_total_eq();
    }
    (&NotificationHint::X(ref __self_0),) => {
        (*__self_0).assert_receiver_is_total_eq();
    }
    (&NotificationHint::Y(ref __self_0),) => {
        (*__self_0).assert_receiver_is_total_eq();
    }
    (&NotificationHint::Urgency(ref __self_0),) => {
        (*__self_0).assert_receiver_is_total_eq();
    }
    (&NotificationHint::Custom(ref __self_0, ref __self_1),) => {
        (*__self_0).assert_receiver_is_total_eq();
        (*__self_1).assert_receiver_is_total_eq();
    }
    (&NotificationHint::Invalid,) => { }
})), id: 2413, rules: DefaultBlock, span: Span { lo: BytePos(29528), hi: BytePos(29530), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(29528), hi: BytePos(29530), expn_id: ExpnId(139) } }]), vis: Inherited, span: Span { lo: BytePos(29528), hi: BytePos(29530), expn_id: ExpnId(139) } }
Item { ident: NotificationHint#0, attrs: [], id: 2576, node: ItemImpl(Normal, "positive", Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 2678, predicates: [] } }, None, type(NotificationHint), [ImplItem { id: 2577, ident: as_bool#0, vis: Public, attrs: [Spanned { node: Attribute_ { id: AttrId(114), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Get the `bool` representation of this hint.", CookedStr), span: Span { lo: BytePos(31663), hi: BytePos(31710), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(31663), hi: BytePos(31710), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(31663), hi: BytePos(31710), expn_id: ExpnId(4294967295) } }], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(2580: self), id: 2579 }], output: Return(type(Option<bool>)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 2578, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutImmutable, self#0), span: Span { lo: BytePos(31730), hi: BytePos(31739), expn_id: ExpnId(4294967295) } } }, Block { stmts: [], expr: Some(expr(2585: match self {
    &NotificationHint::ActionIcons(inner) => Some(inner),
    &NotificationHint::Resident(inner) => Some(inner),
    &NotificationHint::SuppressSound(inner) => Some(inner),
    &NotificationHint::Transient(inner) => Some(inner),
    _ => None,
})), id: 2584, rules: DefaultBlock, span: Span { lo: BytePos(31753), hi: BytePos(32085), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(31715), hi: BytePos(32085), expn_id: ExpnId(4294967295) } }, ImplItem { id: 2613, ident: as_i32#0, vis: Public, attrs: [Spanned { node: Attribute_ { id: AttrId(115), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Get the `i32` representation of this hint.", CookedStr), span: Span { lo: BytePos(32091), hi: BytePos(32137), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(32091), hi: BytePos(32137), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(32091), hi: BytePos(32137), expn_id: ExpnId(4294967295) } }], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(2616: self), id: 2615 }], output: Return(type(Option<i32>)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 2614, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutImmutable, self#0), span: Span { lo: BytePos(32156), hi: BytePos(32165), expn_id: ExpnId(4294967295) } } }, Block { stmts: [], expr: Some(expr(2621: match self {
    &NotificationHint::X(inner) => Some(inner),
    &NotificationHint::Y(inner) => Some(inner),
    _ => None,
})), id: 2620, rules: DefaultBlock, span: Span { lo: BytePos(32178), hi: BytePos(32350), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(32142), hi: BytePos(32350), expn_id: ExpnId(4294967295) } }, ImplItem { id: 2637, ident: as_str#0, vis: Public, attrs: [Spanned { node: Attribute_ { id: AttrId(116), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Get the `&str` representation of this hint.", CookedStr), span: Span { lo: BytePos(32356), hi: BytePos(32403), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(32356), hi: BytePos(32403), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(32356), hi: BytePos(32403), expn_id: ExpnId(4294967295) } }], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(2640: self), id: 2639 }], output: Return(type(Option<&str>)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 2638, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutImmutable, self#0), span: Span { lo: BytePos(32422), hi: BytePos(32431), expn_id: ExpnId(4294967295) } } }, Block { stmts: [], expr: Some(expr(2646: match self {
    &NotificationHint::DesktopEntry(ref inner) => Some(&inner),
    &NotificationHint::ImagePath(ref inner) => Some(&inner),
    &NotificationHint::SoundFile(ref inner) => Some(&inner),
    &NotificationHint::SoundName(ref inner) => Some(&inner),
    _ => None,
})), id: 2645, rules: DefaultBlock, span: Span { lo: BytePos(32445), hi: BytePos(32785), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(32408), hi: BytePos(32785), expn_id: ExpnId(4294967295) } }]), vis: Inherited, span: Span { lo: BytePos(31635), hi: BytePos(32787), expn_id: ExpnId(4294967295) } }
Item { ident: MessageItem.From<&'a NotificationHint>#0, attrs: [], id: 2680, node: ItemImpl(Normal, "positive", Generics { lifetimes: [LifetimeDef { lifetime: lifetime(2851: 'a), bounds: [] }], ty_params: [], where_clause: WhereClause { id: 2852, predicates: [] } }, Some(TraitRef { path: path(From<&'a NotificationHint>), ref_id: 2847 }), type(MessageItem), [ImplItem { id: 2681, ident: from#0, vis: Inherited, attrs: [], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(&NotificationHint), pat: pat(2684: hint), id: 2683 }], output: Return(type(MessageItem)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 2682, predicates: [] } }, explicit_self: Spanned { node: SelfStatic, span: Span { lo: BytePos(32855), hi: BytePos(32882), expn_id: ExpnId(4294967295) } } }, Block { stmts: [stmt(2689: let hint: (String, MessageItem) =
    match hint {
        &NotificationHint::ActionIcons(value) =>
        (ACTION_ICONS.to_owned(), MessageItem::Bool(value)),
        &NotificationHint::Category(ref value) =>
        (CATEGORY.to_owned(), MessageItem::Str(value.clone())),
        &NotificationHint::DesktopEntry(ref value) =>
        (DESKTOP_ENTRY.to_owned(), MessageItem::Str(value.clone())),
        &NotificationHint::ImagePath(ref value) =>
        (IMAGE_PATH.to_owned(), MessageItem::Str(value.clone())),
        &NotificationHint::Resident(value) =>
        (RESIDENT.to_owned(), MessageItem::Bool(value)),
        &NotificationHint::SoundFile(ref value) =>
        (SOUND_FILE.to_owned(), MessageItem::Str(value.clone())),
        &NotificationHint::SoundName(ref value) =>
        (SOUND_NAME.to_owned(), MessageItem::Str(value.clone())),
        &NotificationHint::SuppressSound(value) =>
        (SUPPRESS_SOUND.to_owned(), MessageItem::Bool(value)),
        &NotificationHint::Transient(value) =>
        (TRANSIENT.to_owned(), MessageItem::Bool(value)),
        &NotificationHint::X(value) =>
        (X.to_owned(), MessageItem::Int32(value)),
        &NotificationHint::Y(value) =>
        (Y.to_owned(), MessageItem::Int32(value)),
        &NotificationHint::Urgency(value) =>
        (URGENCY.to_owned(), MessageItem::Byte(value as u8)),
        &NotificationHint::Custom(ref key, ref val) =>
        (key.to_owned(), MessageItem::Str(val.to_owned())),
        &NotificationHint::Invalid =>
        ("invalid".to_owned(), MessageItem::Str("Invalid".to_owned())),
    };)], expr: Some(expr(2832: MessageItem::DictEntry(Box::new(hint.0.into()),
                       Box::new(MessageItem::Variant(Box::new(hint.1)))))), id: 2688, rules: DefaultBlock, span: Span { lo: BytePos(32895), hi: BytePos(35058), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(32847), hi: BytePos(35058), expn_id: ExpnId(4294967295) } }]), vis: Inherited, span: Span { lo: BytePos(32789), hi: BytePos(35060), expn_id: ExpnId(4294967295) } }
Item { ident: NotificationHint.From<&'a MessageItem>#0, attrs: [], id: 2854, node: ItemImpl(Normal, "positive", Generics { lifetimes: [LifetimeDef { lifetime: lifetime(3192: 'a), bounds: [] }], ty_params: [], where_clause: WhereClause { id: 3193, predicates: [] } }, Some(TraitRef { path: path(From<&'a MessageItem>), ref_id: 3188 }), type(NotificationHint), [ImplItem { id: 2855, ident: from#0, vis: Inherited, attrs: [], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(&MessageItem), pat: pat(2858: item), id: 2857 }], output: Return(type(NotificationHint)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 2856, predicates: [] } }, explicit_self: Spanned { node: SelfStatic, span: Span { lo: BytePos(35183), hi: BytePos(35205), expn_id: ExpnId(4294967295) } } }, Block { stmts: [], expr: Some(expr(2863: match item {
    &MessageItem::DictEntry(ref key, ref value) if
    unwrap_message_str(&**key) == CATEGORY =>
    NotificationHint::Category(unwrap_message_str(&**value)),
    &MessageItem::DictEntry(ref key, ref value) if
    unwrap_message_str(&**key) == ACTION_ICONS =>
    NotificationHint::ActionIcons(unwrap_message_bool(&**value)),
    &MessageItem::DictEntry(ref key, ref value) if
    unwrap_message_str(&**key) == DESKTOP_ENTRY =>
    NotificationHint::DesktopEntry(unwrap_message_str(&**value)),
    &MessageItem::DictEntry(ref key, ref value) if
    unwrap_message_str(&**key) == IMAGE_PATH =>
    NotificationHint::ImagePath(unwrap_message_str(&**value)),
    &MessageItem::DictEntry(ref key, ref value) if
    unwrap_message_str(&**key) == RESIDENT =>
    NotificationHint::Resident(unwrap_message_bool(&**value)),
    &MessageItem::DictEntry(ref key, ref value) if
    unwrap_message_str(&**key) == SOUND_FILE =>
    NotificationHint::SoundFile(unwrap_message_str(&**value)),
    &MessageItem::DictEntry(ref key, ref value) if
    unwrap_message_str(&**key) == SOUND_NAME =>
    NotificationHint::SoundName(unwrap_message_str(&**value)),
    &MessageItem::DictEntry(ref key, ref value) if
    unwrap_message_str(&**key) == SUPPRESS_SOUND =>
    NotificationHint::SuppressSound(unwrap_message_bool(&**value)),
    &MessageItem::DictEntry(ref key, ref value) if
    unwrap_message_str(&**key) == TRANSIENT =>
    NotificationHint::Transient(unwrap_message_bool(&**value)),
    &MessageItem::DictEntry(ref key, ref value) if
    unwrap_message_str(&**key) == X =>
    NotificationHint::X(unwrap_message_int(&**value)),
    &MessageItem::DictEntry(ref key, ref value) if
    unwrap_message_str(&**key) == Y =>
    NotificationHint::Y(unwrap_message_int(&**value)),
    &MessageItem::DictEntry(ref key, ref value) if
    unwrap_message_str(&**key) == URGENCY =>
    NotificationHint::Urgency(match unwrap_message_int(&**value) {
                                  0 => NotificationUrgency::Low,
                                  2 => NotificationUrgency::Critical,
                                  _ => NotificationUrgency::Normal,
                              }),
    &MessageItem::DictEntry(ref key, ref value) =>
    NotificationHint::Custom(unwrap_message_str(&**key),
                             unwrap_message_str(&**value)),
    foo@_ => {
        ::std::io::_print(::std::fmt::Arguments::new_v1_formatted({
                                                                      static __STATIC_FMTSTR:
                                                                             &'static [&'static str]
                                                                             =
                                                                          &["Invalid ",
                                                                            " \n"];
                                                                      __STATIC_FMTSTR
                                                                  },
                                                                  &match (&foo,)
                                                                       {
                                                                       (__arg0,)
                                                                       =>
                                                                       [::std::fmt::ArgumentV1::new(__arg0,
                                                                                                    ::std::fmt::Debug::fmt)],
                                                                   },
                                                                  {
                                                                      static __STATIC_FMTARGS:
                                                                             &'static [::std::fmt::rt::v1::Argument]
                                                                             =
                                                                          &[::std::fmt::rt::v1::Argument{position:
                                                                                                             ::std::fmt::rt::v1::Position::Next,
                                                                                                         format:
                                                                                                             ::std::fmt::rt::v1::FormatSpec{fill:
                                                                                                                                                ' ',
                                                                                                                                            align:
                                                                                                                                                ::std::fmt::rt::v1::Alignment::Unknown,
                                                                                                                                            flags:
                                                                                                                                                4u32,
                                                                                                                                            precision:
                                                                                                                                                ::std::fmt::rt::v1::Count::Implied,
                                                                                                                                            width:
                                                                                                                                                ::std::fmt::rt::v1::Count::Implied,},}];
                                                                      __STATIC_FMTARGS
                                                                  }));
        NotificationHint::Invalid
    }
})), id: 2862, rules: DefaultBlock, span: Span { lo: BytePos(35223), hi: BytePos(37674), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(35174), hi: BytePos(37674), expn_id: ExpnId(4294967295) } }]), vis: Inherited, span: Span { lo: BytePos(35116), hi: BytePos(37677), expn_id: ExpnId(4294967295) } }
Item { ident: __STATIC_FMTSTR#330, attrs: [], id: 3144, node: ItemStatic(type(&'static [&'static str]), MutImmutable, expr(3151: &["Invalid ", " \n"])), vis: Inherited, span: Span { lo: BytePos(41345), hi: BytePos(41370), expn_id: ExpnId(156) } }
Item { ident: __STATIC_FMTARGS#330, attrs: [], id: 3171, node: ItemStatic(type(&'static [::std::fmt::rt::v1::Argument]), MutImmutable, expr(3176: &[::std::fmt::rt::v1::Argument{position: ::std::fmt::rt::v1::Position::Next,
                               format:
                                   ::std::fmt::rt::v1::FormatSpec{fill: ' ',
                                                                  align:
                                                                      ::std::fmt::rt::v1::Alignment::Unknown,
                                                                  flags: 4u32,
                                                                  precision:
                                                                      ::std::fmt::rt::v1::Count::Implied,
                                                                  width:
                                                                      ::std::fmt::rt::v1::Count::Implied,},}])), vis: Inherited, span: Span { lo: BytePos(41190), hi: BytePos(41221), expn_id: ExpnId(156) } }
Item { ident: #0, attrs: [], id: 3195, node: ItemUse(Spanned { node: ViewPathSimple(NotificationHint#0, path(hints::NotificationHint)), span: Span { lo: BytePos(2811), hi: BytePos(2834), expn_id: ExpnId(4294967295) } }), vis: Public, span: Span { lo: BytePos(2803), hi: BytePos(2835), expn_id: ExpnId(4294967295) } }
Item { ident: Notification#0, attrs: [Spanned { node: Attribute_ { id: AttrId(121), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Desktop notification.", CookedStr), span: Span { lo: BytePos(2839), hi: BytePos(2864), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(2839), hi: BytePos(2864), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(2839), hi: BytePos(2864), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(122), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("///", CookedStr), span: Span { lo: BytePos(2865), hi: BytePos(2868), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(2865), hi: BytePos(2868), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(2865), hi: BytePos(2868), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(123), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// A desktop notification is configured via builder pattern, before it is launched with `show()`.", CookedStr), span: Span { lo: BytePos(2869), hi: BytePos(2967), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(2869), hi: BytePos(2967), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(2869), hi: BytePos(2967), expn_id: ExpnId(4294967295) } }], id: 3196, node: ItemStruct(Struct([Spanned { node: StructField_ { kind: NamedField(appname#0, Public), id: 3197, ty: type(String), attrs: [Spanned { node: Attribute_ { id: AttrId(125), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Filled by default with executable name.", CookedStr), span: Span { lo: BytePos(3021), hi: BytePos(3064), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(3021), hi: BytePos(3064), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(3021), hi: BytePos(3064), expn_id: ExpnId(4294967295) } }] }, span: Span { lo: BytePos(3069), hi: BytePos(3088), expn_id: ExpnId(4294967295) } }, Spanned { node: StructField_ { kind: NamedField(summary#0, Public), id: 3199, ty: type(String), attrs: [Spanned { node: Attribute_ { id: AttrId(126), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Single line to summarize the content.", CookedStr), span: Span { lo: BytePos(3094), hi: BytePos(3135), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(3094), hi: BytePos(3135), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(3094), hi: BytePos(3135), expn_id: ExpnId(4294967295) } }] }, span: Span { lo: BytePos(3140), hi: BytePos(3159), expn_id: ExpnId(4294967295) } }, Spanned { node: StructField_ { kind: NamedField(body#0, Public), id: 3201, ty: type(String), attrs: [Spanned { node: Attribute_ { id: AttrId(127), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Multiple lines possible, may support simple markup,", CookedStr), span: Span { lo: BytePos(3165), hi: BytePos(3220), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(3165), hi: BytePos(3220), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(3165), hi: BytePos(3220), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(128), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// checkout `get_capabilities()` -> `body-markup` and `body-hyperlinks`.", CookedStr), span: Span { lo: BytePos(3225), hi: BytePos(3298), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(3225), hi: BytePos(3298), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(3225), hi: BytePos(3298), expn_id: ExpnId(4294967295) } }] }, span: Span { lo: BytePos(3303), hi: BytePos(3322), expn_id: ExpnId(4294967295) } }, Spanned { node: StructField_ { kind: NamedField(icon#0, Public), id: 3203, ty: type(String), attrs: [Spanned { node: Attribute_ { id: AttrId(129), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Use a file:// URI or a name in an icon theme, must be compliant freedesktop.org.", CookedStr), span: Span { lo: BytePos(3328), hi: BytePos(3412), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(3328), hi: BytePos(3412), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(3328), hi: BytePos(3412), expn_id: ExpnId(4294967295) } }] }, span: Span { lo: BytePos(3417), hi: BytePos(3436), expn_id: ExpnId(4294967295) } }, Spanned { node: StructField_ { kind: NamedField(hints#0, Public), id: 3205, ty: type(HashSet<NotificationHint>), attrs: [Spanned { node: Attribute_ { id: AttrId(130), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Checkout `NotificationHint`", CookedStr), span: Span { lo: BytePos(3442), hi: BytePos(3473), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(3442), hi: BytePos(3473), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(3442), hi: BytePos(3473), expn_id: ExpnId(4294967295) } }] }, span: Span { lo: BytePos(3478), hi: BytePos(3516), expn_id: ExpnId(4294967295) } }, Spanned { node: StructField_ { kind: NamedField(actions#0, Public), id: 3208, ty: type(Vec<String>), attrs: [Spanned { node: Attribute_ { id: AttrId(131), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// See `Notification::actions()` and `Notification::action()`", CookedStr), span: Span { lo: BytePos(3522), hi: BytePos(3584), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(3522), hi: BytePos(3584), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(3522), hi: BytePos(3584), expn_id: ExpnId(4294967295) } }] }, span: Span { lo: BytePos(3589), hi: BytePos(3613), expn_id: ExpnId(4294967295) } }, Spanned { node: StructField_ { kind: NamedField(timeout#0, Public), id: 3211, ty: type(i32), attrs: [Spanned { node: Attribute_ { id: AttrId(132), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Lifetime of the Notification in ms. Often not respected by server, sorry.", CookedStr), span: Span { lo: BytePos(3619), hi: BytePos(3696), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(3619), hi: BytePos(3696), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(3619), hi: BytePos(3696), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(133), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// -1 -> expires according server default", CookedStr), span: Span { lo: BytePos(3701), hi: BytePos(3743), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(3701), hi: BytePos(3743), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(3701), hi: BytePos(3743), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(134), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// 0 -> expires never", CookedStr), span: Span { lo: BytePos(3748), hi: BytePos(3770), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(3748), hi: BytePos(3770), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(3748), hi: BytePos(3770), expn_id: ExpnId(4294967295) } }] }, span: Span { lo: BytePos(3775), hi: BytePos(3791), expn_id: ExpnId(4294967295) } }, Spanned { node: StructField_ { kind: NamedField(id#0, Inherited), id: 3213, ty: type(Option<u32>), attrs: [Spanned { node: Attribute_ { id: AttrId(135), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Only to be used on the receive end. Use Notification hand for updating.", CookedStr), span: Span { lo: BytePos(3840), hi: BytePos(3915), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(3840), hi: BytePos(3915), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(3840), hi: BytePos(3915), expn_id: ExpnId(4294967295) } }] }, span: Span { lo: BytePos(3920), hi: BytePos(3935), expn_id: ExpnId(4294967295) } }], 3216), Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 3217, predicates: [] } }), vis: Public, span: Span { lo: BytePos(2991), hi: BytePos(3937), expn_id: ExpnId(4294967295) } }
Item { ident: Notification.::std::clone::Clone#0, attrs: [Spanned { node: Attribute_ { id: AttrId(1212), style: Outer, value: Spanned { node: MetaWord("automatically_derived"), span: Span { lo: BytePos(2983), hi: BytePos(2988), expn_id: ExpnId(159) } }, is_sugared_doc: false }, span: Span { lo: BytePos(2983), hi: BytePos(2988), expn_id: ExpnId(159) } }, Spanned { node: Attribute_ { id: AttrId(1213), style: Outer, value: Spanned { node: MetaList("allow", [Spanned { node: MetaWord("unused_qualifications"), span: Span { lo: BytePos(2983), hi: BytePos(2988), expn_id: ExpnId(159) } }]), span: Span { lo: BytePos(2983), hi: BytePos(2988), expn_id: ExpnId(159) } }, is_sugared_doc: false }, span: Span { lo: BytePos(2983), hi: BytePos(2988), expn_id: ExpnId(159) } }], id: 3218, node: ItemImpl(Normal, "positive", Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 3288, predicates: [] } }, Some(TraitRef { path: path(::std::clone::Clone), ref_id: 3287 }), type(Notification), [ImplItem { id: 3219, ident: clone#0, vis: Inherited, attrs: [Spanned { node: Attribute_ { id: AttrId(1211), style: Outer, value: Spanned { node: MetaWord("inline"), span: Span { lo: BytePos(2983), hi: BytePos(2988), expn_id: ExpnId(4294967295) } }, is_sugared_doc: false }, span: Span { lo: BytePos(2983), hi: BytePos(2988), expn_id: ExpnId(4294967295) } }], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(3222: self), id: 3221 }], output: Return(type(Notification)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 3220, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutImmutable, self#0), span: Span { lo: BytePos(2983), hi: BytePos(2988), expn_id: ExpnId(159) } } }, Block { stmts: [], expr: Some(expr(3226: match *self {
    Notification {
    appname: ref __self_0_0,
    summary: ref __self_0_1,
    body: ref __self_0_2,
    icon: ref __self_0_3,
    hints: ref __self_0_4,
    actions: ref __self_0_5,
    timeout: ref __self_0_6,
    id: ref __self_0_7 } =>
    Notification{appname: ::std::clone::Clone::clone(&(*__self_0_0)),
                 summary: ::std::clone::Clone::clone(&(*__self_0_1)),
                 body: ::std::clone::Clone::clone(&(*__self_0_2)),
                 icon: ::std::clone::Clone::clone(&(*__self_0_3)),
                 hints: ::std::clone::Clone::clone(&(*__self_0_4)),
                 actions: ::std::clone::Clone::clone(&(*__self_0_5)),
                 timeout: ::std::clone::Clone::clone(&(*__self_0_6)),
                 id: ::std::clone::Clone::clone(&(*__self_0_7)),},
})), id: 3225, rules: DefaultBlock, span: Span { lo: BytePos(2983), hi: BytePos(2988), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(2983), hi: BytePos(2988), expn_id: ExpnId(159) } }]), vis: Inherited, span: Span { lo: BytePos(2983), hi: BytePos(2988), expn_id: ExpnId(159) } }

Item { ident: Notification.::std::fmt::Debug#0, attrs: [Spanned { node: Attribute_ { id: AttrId(1214), style: Outer, value: Spanned { node: MetaWord("automatically_derived"), span: Span { lo: BytePos(2977), hi: BytePos(2982), expn_id: ExpnId(168) } }, is_sugared_doc: false }, span: Span { lo: BytePos(2977), hi: BytePos(2982), expn_id: ExpnId(168) } }, Spanned { node: Attribute_ { id: AttrId(1215), style: Outer, value: Spanned { node: MetaList("allow", [Spanned { node: MetaWord("unused_qualifications"), span: Span { lo: BytePos(2977), hi: BytePos(2982), expn_id: ExpnId(168) } }]), span: Span { lo: BytePos(2977), hi: BytePos(2982), expn_id: ExpnId(168) } }, is_sugared_doc: false }, span: Span { lo: BytePos(2977), hi: BytePos(2982), expn_id: ExpnId(168) } }], id: 3290, node: ItemImpl(Normal, "positive", Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 3413, predicates: [] } }, Some(TraitRef { path: path(::std::fmt::Debug), ref_id: 3412 }), type(Notification), [ImplItem { id: 3291, ident: fmt#0, vis: Inherited, attrs: [], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(3294: self), id: 3293 }, Arg { ty: type(&mut ::std::fmt::Formatter), pat: pat(3297: __arg_0), id: 3296 }], output: Return(type(::std::fmt::Result)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 3292, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutImmutable, self#0), span: Span { lo: BytePos(2977), hi: BytePos(2982), expn_id: ExpnId(168) } } }, Block { stmts: [], expr: Some(expr(3302: match *self {
    Notification {
    appname: ref __self_0_0,
    summary: ref __self_0_1,
    body: ref __self_0_2,
    icon: ref __self_0_3,
    hints: ref __self_0_4,
    actions: ref __self_0_5,
    timeout: ref __self_0_6,
    id: ref __self_0_7 } => {
        let mut builder = __arg_0.debug_struct("Notification");
        let _ = builder.field("appname", &&(*__self_0_0));
        let _ = builder.field("summary", &&(*__self_0_1));
        let _ = builder.field("body", &&(*__self_0_2));
        let _ = builder.field("icon", &&(*__self_0_3));
        let _ = builder.field("hints", &&(*__self_0_4));
        let _ = builder.field("actions", &&(*__self_0_5));
        let _ = builder.field("timeout", &&(*__self_0_6));
        let _ = builder.field("id", &&(*__self_0_7));
        builder.finish()
    }
})), id: 3301, rules: DefaultBlock, span: Span { lo: BytePos(2977), hi: BytePos(2982), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(2977), hi: BytePos(2982), expn_id: ExpnId(168) } }]), vis: Inherited, span: Span { lo: BytePos(2977), hi: BytePos(2982), expn_id: ExpnId(168) } }

Item { ident: Notification#0,
attrs: [],
id: 3415,
node: ItemImpl(
    Normal,
    "positive",
    Generics { lifetimes: [],
    ty_params: [],
    where_clause: WhereClause { id: 4059,
    predicates: [] } },
    None,
    type(Notification),

 [
 ImplItem {
    id: 3416, ident: new#0, vis: Public, attrs: [Spanned { node: Attribute_ { id: AttrId(137), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Constructs a new Notification.", CookedStr), span: Span { lo: BytePos(3963), hi: BytePos(3997), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(3963), hi: BytePos(3997), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(3963), hi: BytePos(3997), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(138), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("///", CookedStr), span: Span { lo: BytePos(4002), hi: BytePos(4005), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(4002), hi: BytePos(4005), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(4002), hi: BytePos(4005), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(139), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Most fields are empty by default, only `appname` is initialized with the name of the current", CookedStr), span: Span { lo: BytePos(4010), hi: BytePos(4106), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(4010), hi: BytePos(4106), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(4010), hi: BytePos(4106), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(140), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// executable.", CookedStr), span: Span { lo: BytePos(4111), hi: BytePos(4126), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(4111), hi: BytePos(4126), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(4111), hi: BytePos(4126), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(141), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// The appname is used by some desktop environments to group notifications.", CookedStr), span: Span { lo: BytePos(4131), hi: BytePos(4207), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(4131), hi: BytePos(4207), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(4131), hi: BytePos(4207), expn_id: ExpnId(4294967295) } }], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [], output: Return(type(Notification)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 3417, predicates: [] } }, explicit_self: Spanned { node: SelfStatic, span: Span { lo: BytePos(4223), hi: BytePos(4227), expn_id: ExpnId(4294967295) } } }, Block { stmts: [], expr: Some(expr(3420: Notification{appname: exe_name(), summary: String::new(), body: String::new(), icon: String::new(), hints: HashSet::new(), actions: Vec::new(), timeout: -1, id: None,})),
    id: 3419, rules: DefaultBlock, span: Span { lo: BytePos(4241), hi: BytePos(4551), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(4212), hi: BytePos(4551), expn_id: ExpnId(4294967295) } },




    /// HENDRIK WAS HERE
    ImplItem {
        id: 3436, ident: appname#0, vis: Public, attrs: [
            Spanned { node: Attribute_ { id: AttrId(142), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Overwrite the appname field used for Notification.", CookedStr), span: Span { lo: BytePos(4557), hi: BytePos(4611), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(4557), hi: BytePos(4611), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(4557), hi: BytePos(4611), expn_id: ExpnId(4294967295) } }
        ],
        node: Method(
            MethodSig {
                unsafety: Normal,
                constness: NotConst,
                abi: Rust,

                decl: FnDecl {
                    inputs: [
                        Arg { ty: type(_), pat: pat(3439: self), id: 3438 },
                        Arg { ty: type(&str), pat: pat(3442: appname), id: 3441 }
                    ],
                    output: Return(type(&mut Notification)), variadic: false
                },

                generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 3437, predicates: [] } },
                explicit_self: Spanned { node: SelfRegion(None, MutMutable, self#0), span: Span { lo: BytePos(4631), hi: BytePos(4658), expn_id: ExpnId(4294967295) } }
            },
            Block { stmts: [stmt(3448: self.appname = appname.to_owned();)], expr: Some(expr(3454: self)), id: 3447, rules: DefaultBlock, span: Span { lo: BytePos(4677), hi: BytePos(4740), expn_id: ExpnId(4294967295) } }
            ),
        span: Span { lo: BytePos(4616), hi: BytePos(4740), expn_id: ExpnId(4294967295) } },





ImplItem { id: 3455, ident: summary#0, vis: Public, attrs: [Spanned { node: Attribute_ { id: AttrId(143), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Set the `summary`.", CookedStr), span: Span { lo: BytePos(4746), hi: BytePos(4768), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(4746), hi: BytePos(4768), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(4746), hi: BytePos(4768), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(144), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("///", CookedStr), span: Span { lo: BytePos(4773), hi: BytePos(4776), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(4773), hi: BytePos(4776), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(4773), hi: BytePos(4776), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(145), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Often acts as title of the notification. For more elaborate content use the `body` field.", CookedStr), span: Span { lo: BytePos(4781), hi: BytePos(4874), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(4781), hi: BytePos(4874), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(4781), hi: BytePos(4874), expn_id: ExpnId(4294967295) } }], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(3458: self), id: 3457 }, Arg { ty: type(&str), pat: pat(3461: summary), id: 3460 }], output: Return(type(&mut Notification)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 3456, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutMutable, self#0), span: Span { lo: BytePos(4894), hi: BytePos(4921), expn_id: ExpnId(4294967295) } } }, Block { stmts: [stmt(3467: self.summary = summary.to_owned();)], expr: Some(expr(3473: self)), id: 3466, rules: DefaultBlock, span: Span { lo: BytePos(4940), hi: BytePos(5003), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(4879), hi: BytePos(5003), expn_id: ExpnId(4294967295) } },
ImplItem { id: 3474, ident: body#0, vis: Public, attrs: [Spanned { node: Attribute_ { id: AttrId(146), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Set the content of the `body` field.", CookedStr), span: Span { lo: BytePos(5009), hi: BytePos(5049), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(5009), hi: BytePos(5049), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(5009), hi: BytePos(5049), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(147), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("///", CookedStr), span: Span { lo: BytePos(5054), hi: BytePos(5057), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(5054), hi: BytePos(5057), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(5054), hi: BytePos(5057), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(148), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Multiline textual content of the notification.", CookedStr), span: Span { lo: BytePos(5062), hi: BytePos(5112), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(5062), hi: BytePos(5112), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(5062), hi: BytePos(5112), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(149), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Each line should be treated as a paragraph.", CookedStr), span: Span { lo: BytePos(5117), hi: BytePos(5164), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(5117), hi: BytePos(5164), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(5117), hi: BytePos(5164), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(150), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Simple html markup should be supported, depending on the server implementation.", CookedStr), span: Span { lo: BytePos(5169), hi: BytePos(5252), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(5169), hi: BytePos(5252), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(5169), hi: BytePos(5252), expn_id: ExpnId(4294967295) } }], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(3477: self), id: 3476 }, Arg { ty: type(&str), pat: pat(3480: body), id: 3479 }], output: Return(type(&mut Notification)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 3475, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutMutable, self#0), span: Span { lo: BytePos(5269), hi: BytePos(5293), expn_id: ExpnId(4294967295) } } }, Block { stmts: [stmt(3486: self.body = body.to_owned();)], expr: Some(expr(3492: self)), id: 3485, rules: DefaultBlock, span: Span { lo: BytePos(5312), hi: BytePos(5369), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(5257), hi: BytePos(5369), expn_id: ExpnId(4294967295) } },
ImplItem { id: 3493, ident: icon#0, vis: Public, attrs: [Spanned { node: Attribute_ { id: AttrId(151), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Set the `icon` field.", CookedStr), span: Span { lo: BytePos(5375), hi: BytePos(5400), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(5375), hi: BytePos(5400), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(5375), hi: BytePos(5400), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(152), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("///", CookedStr), span: Span { lo: BytePos(5405), hi: BytePos(5408), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(5405), hi: BytePos(5408), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(5405), hi: BytePos(5408), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(153), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// You can use common icon names here, usually those in `/usr/share/icons`", CookedStr), span: Span { lo: BytePos(5413), hi: BytePos(5488), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(5413), hi: BytePos(5488), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(5413), hi: BytePos(5488), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(154), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// can all be used.", CookedStr), span: Span { lo: BytePos(5493), hi: BytePos(5513), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(5493), hi: BytePos(5513), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(5493), hi: BytePos(5513), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(155), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// You can also use an absolute path to file.", CookedStr), span: Span { lo: BytePos(5518), hi: BytePos(5564), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(5518), hi: BytePos(5564), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(5518), hi: BytePos(5564), expn_id: ExpnId(4294967295) } }], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(3496: self), id: 3495 }, Arg { ty: type(&str), pat: pat(3499: icon), id: 3498 }], output: Return(type(&mut Notification)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 3494, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutMutable, self#0), span: Span { lo: BytePos(5581), hi: BytePos(5605), expn_id: ExpnId(4294967295) } } }, Block { stmts: [stmt(3505: self.icon = icon.to_owned();)], expr: Some(expr(3511: self)), id: 3504, rules: DefaultBlock, span: Span { lo: BytePos(5624), hi: BytePos(5681), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(5569), hi: BytePos(5681), expn_id: ExpnId(4294967295) } },
ImplItem { id: 3512, ident: hint#0, vis: Public, attrs: [Spanned { node: Attribute_ { id: AttrId(156), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Adds a hint.", CookedStr), span: Span { lo: BytePos(5687), hi: BytePos(5703), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(5687), hi: BytePos(5703), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(5687), hi: BytePos(5703), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(157), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("///", CookedStr), span: Span { lo: BytePos(5708), hi: BytePos(5711), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(5708), hi: BytePos(5711), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(5708), hi: BytePos(5711), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(158), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// This method will add a hint to the internal hint hashset.", CookedStr), span: Span { lo: BytePos(5716), hi: BytePos(5777), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(5716), hi: BytePos(5777), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(5716), hi: BytePos(5777), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(159), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Hints must be of type NotificationHint.", CookedStr), span: Span { lo: BytePos(5782), hi: BytePos(5825), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(5782), hi: BytePos(5825), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(5782), hi: BytePos(5825), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(160), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("///", CookedStr), span: Span { lo: BytePos(5830), hi: BytePos(5833), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(5830), hi: BytePos(5833), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(5830), hi: BytePos(5833), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(161), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// ```no_run", CookedStr), span: Span { lo: BytePos(5838), hi: BytePos(5851), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(5838), hi: BytePos(5851), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(5838), hi: BytePos(5851), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(162), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// # use notify_rust::Notification;", CookedStr), span: Span { lo: BytePos(5856), hi: BytePos(5892), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(5856), hi: BytePos(5892), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(5856), hi: BytePos(5892), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(163), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// # use notify_rust::NotificationHint;", CookedStr), span: Span { lo: BytePos(5897), hi: BytePos(5937), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(5897), hi: BytePos(5937), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(5897), hi: BytePos(5937), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(164), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Notification::new()", CookedStr), span: Span { lo: BytePos(5942), hi: BytePos(5965), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(5942), hi: BytePos(5965), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(5942), hi: BytePos(5965), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(165), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("///     .summary(\"Category:email\")", CookedStr), span: Span { lo: BytePos(5970), hi: BytePos(6004), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(5970), hi: BytePos(6004), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(5970), hi: BytePos(6004), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(166), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("///     .body(\"This should not go away until you acknoledge it.\")", CookedStr), span: Span { lo: BytePos(6009), hi: BytePos(6074), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(6009), hi: BytePos(6074), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(6009), hi: BytePos(6074), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(167), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("///     .icon(\"thunderbird\")", CookedStr), span: Span { lo: BytePos(6079), hi: BytePos(6107), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(6079), hi: BytePos(6107), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(6079), hi: BytePos(6107), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(168), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("///     .appname(\"thunderbird\")", CookedStr), span: Span { lo: BytePos(6112), hi: BytePos(6143), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(6112), hi: BytePos(6143), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(6112), hi: BytePos(6143), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(169), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("///     .hint(NotificationHint::Category(\"email\".to_owned()))", CookedStr), span: Span { lo: BytePos(6148), hi: BytePos(6209), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(6148), hi: BytePos(6209), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(6148), hi: BytePos(6209), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(170), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("///     .hint(NotificationHint::Resident(true))", CookedStr), span: Span { lo: BytePos(6214), hi: BytePos(6261), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(6214), hi: BytePos(6261), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(6214), hi: BytePos(6261), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(171), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("///     .show();", CookedStr), span: Span { lo: BytePos(6266), hi: BytePos(6282), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(6266), hi: BytePos(6282), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(6266), hi: BytePos(6282), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(172), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// ```", CookedStr), span: Span { lo: BytePos(6287), hi: BytePos(6294), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(6287), hi: BytePos(6294), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(6287), hi: BytePos(6294), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(173), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("///", CookedStr), span: Span { lo: BytePos(6299), hi: BytePos(6302), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(6299), hi: BytePos(6302), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(6299), hi: BytePos(6302), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(174), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("///", CookedStr), span: Span { lo: BytePos(6307), hi: BytePos(6310), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(6307), hi: BytePos(6310), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(6307), hi: BytePos(6310), expn_id: ExpnId(4294967295) } }], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(3515: self), id: 3514 }, Arg { ty: type(NotificationHint), pat: pat(3518: hint), id: 3517 }], output: Return(type(&mut Notification)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 3513, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutMutable, self#0), span: Span { lo: BytePos(6327), hi: BytePos(6363), expn_id: ExpnId(4294967295) } } }, Block { stmts: [stmt(3523: self.hints.insert(hint);)], expr: Some(expr(3528: self)), id: 3522, rules: DefaultBlock, span: Span { lo: BytePos(6382), hi: BytePos(6435), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(6315), hi: BytePos(6435), expn_id: ExpnId(4294967295) } },
ImplItem { id: 3529, ident: timeout#0, vis: Public, attrs: [Spanned { node: Attribute_ { id: AttrId(175), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Set the `timeout`.", CookedStr), span: Span { lo: BytePos(6441), hi: BytePos(6463), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(6441), hi: BytePos(6463), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(6441), hi: BytePos(6463), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(176), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("///", CookedStr), span: Span { lo: BytePos(6468), hi: BytePos(6471), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(6468), hi: BytePos(6471), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(6468), hi: BytePos(6471), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(177), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// This sets the time (in miliseconds) from the time the notification is displayed until it is", CookedStr), span: Span { lo: BytePos(6476), hi: BytePos(6571), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(6476), hi: BytePos(6571), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(6476), hi: BytePos(6571), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(178), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// closed again by the Notification Server.", CookedStr), span: Span { lo: BytePos(6576), hi: BytePos(6620), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(6576), hi: BytePos(6620), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(6576), hi: BytePos(6620), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(179), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// According to [specification](https://developer.gnome.org/notification-spec/)", CookedStr), span: Span { lo: BytePos(6625), hi: BytePos(6705), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(6625), hi: BytePos(6705), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(6625), hi: BytePos(6705), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(180), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// -1 will leave the timeout to be set by the server and", CookedStr), span: Span { lo: BytePos(6710), hi: BytePos(6767), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(6710), hi: BytePos(6767), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(6710), hi: BytePos(6767), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(181), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// 0 will cause the notification never to expire.", CookedStr), span: Span { lo: BytePos(6772), hi: BytePos(6822), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(6772), hi: BytePos(6822), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(6772), hi: BytePos(6822), expn_id: ExpnId(4294967295) } }], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(3532: self), id: 3531 }, Arg { ty: type(i32), pat: pat(3535: timeout), id: 3534 }], output: Return(type(&mut Notification)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 3530, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutMutable, self#0), span: Span { lo: BytePos(6842), hi: BytePos(6869), expn_id: ExpnId(4294967295) } } }, Block { stmts: [stmt(3540: self.timeout = timeout;)], expr: Some(expr(3545: self)), id: 3539, rules: DefaultBlock, span: Span { lo: BytePos(6888), hi: BytePos(6940), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(6827), hi: BytePos(6940), expn_id: ExpnId(4294967295) } },
ImplItem { id: 3546, ident: urgency#0, vis: Public, attrs: [Spanned { node: Attribute_ { id: AttrId(182), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Set the `urgency`.", CookedStr), span: Span { lo: BytePos(6946), hi: BytePos(6968), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(6946), hi: BytePos(6968), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(6946), hi: BytePos(6968), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(183), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("///", CookedStr), span: Span { lo: BytePos(6973), hi: BytePos(6976), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(6973), hi: BytePos(6976), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(6973), hi: BytePos(6976), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(184), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Pick between Medium, Low and High.", CookedStr), span: Span { lo: BytePos(6981), hi: BytePos(7019), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(6981), hi: BytePos(7019), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(6981), hi: BytePos(7019), expn_id: ExpnId(4294967295) } }], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(3549: self), id: 3548 }, Arg { ty: type(NotificationUrgency), pat: pat(3552: urgency), id: 3551 }], output: Return(type(&mut Notification)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 3547, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutMutable, self#0), span: Span { lo: BytePos(7039), hi: BytePos(7082), expn_id: ExpnId(4294967295) } } }, Block { stmts: [stmt(3557: self.hint(NotificationHint::Urgency(urgency));)], expr: Some(expr(3563: self)), id: 3556, rules: DefaultBlock, span: Span { lo: BytePos(7101), hi: BytePos(7179), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(7024), hi: BytePos(7179), expn_id: ExpnId(4294967295) } },


ImplItem { id: 3564, ident: actions#0, vis: Public, attrs: [Spanned { node: Attribute_ { id: AttrId(185), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Set `actions`.", CookedStr), span: Span { lo: BytePos(7185), hi: BytePos(7203), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(7185), hi: BytePos(7203), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(7185), hi: BytePos(7203), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(186), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("///", CookedStr), span: Span { lo: BytePos(7208), hi: BytePos(7211), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(7208), hi: BytePos(7211), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(7208), hi: BytePos(7211), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(187), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// To quote http://www.galago-project.org/specs/notification/0.9/x408.html#command-notify", CookedStr), span: Span { lo: BytePos(7216), hi: BytePos(7306), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(7216), hi: BytePos(7306), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(7216), hi: BytePos(7306), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(188), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("///", CookedStr), span: Span { lo: BytePos(7311), hi: BytePos(7314), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(7311), hi: BytePos(7314), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(7311), hi: BytePos(7314), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(189), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// >  Actions are sent over as a list of pairs.", CookedStr), span: Span { lo: BytePos(7319), hi: BytePos(7367), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(7319), hi: BytePos(7367), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(7319), hi: BytePos(7367), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(190), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// >  Each even element in the list (starting at index 0) represents the identifier for the action.", CookedStr), span: Span { lo: BytePos(7372), hi: BytePos(7472), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(7372), hi: BytePos(7472), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(7372), hi: BytePos(7472), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(191), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// >  Each odd element in the list is the localized string that will be displayed to the user.", CookedStr), span: Span { lo: BytePos(7477), hi: BytePos(7572), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(7477), hi: BytePos(7572), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(7477), hi: BytePos(7572), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(192), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("///", CookedStr), span: Span { lo: BytePos(7577), hi: BytePos(7580), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(7577), hi: BytePos(7580), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(7577), hi: BytePos(7580), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(193), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// There is nothing fancy going on here yet.", CookedStr), span: Span { lo: BytePos(7585), hi: BytePos(7630), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(7585), hi: BytePos(7630), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(7585), hi: BytePos(7630), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(194), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// **Carefull! This replaces the internal list of actions!**", CookedStr), span: Span { lo: BytePos(7635), hi: BytePos(7696), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(7635), hi: BytePos(7696), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(7635), hi: BytePos(7696), expn_id: ExpnId(4294967295) } }], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(3567: self), id: 3566 }, Arg { ty: type(Vec<String>), pat: pat(3570: actions), id: 3569 }], output: Return(type(&mut Notification)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 3565, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutMutable, self#0), span: Span { lo: BytePos(7716), hi: BytePos(7750), expn_id: ExpnId(4294967295) } } }, Block { stmts: [stmt(3576: self.actions = actions;)], expr: Some(expr(3581: self)), id: 3575, rules: DefaultBlock, span: Span { lo: BytePos(7769), hi: BytePos(7821), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(7701), hi: BytePos(7821), expn_id: ExpnId(4294967295) } },


ImplItem {
                 id: 3582, ident: action#0,
                 vis: Public,
                 attrs: [Spanned { node: Attribute_ { id: AttrId(195), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Add an action.", CookedStr), span: Span { lo: BytePos(7827), hi: BytePos(7845), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(7827), hi: BytePos(7845), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(7827), hi: BytePos(7845), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(196), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("///", CookedStr), span: Span { lo: BytePos(7850), hi: BytePos(7853), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(7850), hi: BytePos(7853), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(7850), hi: BytePos(7853), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(197), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// This adds a single action to the internal list of actions.", CookedStr), span: Span { lo: BytePos(7858), hi: BytePos(7920), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(7858), hi: BytePos(7920), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(7858), hi: BytePos(7920), expn_id: ExpnId(4294967295) } }],
                 node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(3585: self), id: 3584 }, Arg { ty: type(&str), pat: pat(3588: identifier), id: 3587 }, Arg { ty: type(&str), pat: pat(3592: label), id: 3591 }], output: Return(type(&mut Notification)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 3583, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutMutable, self#0), span: Span { lo: BytePos(7939), hi: BytePos(7981), expn_id: ExpnId(4294967295) } } }, Block { stmts: [stmt(3598: self.actions.push(identifier.to_owned());), stmt(3604: self.actions.push(label.to_owned());)], expr: Some(expr(3610: self)), id: 3597, rules: DefaultBlock, span: Span { lo: BytePos(8000), hi: BytePos(8115), expn_id: ExpnId(4294967295) } }),
                 span: Span { lo: BytePos(7925), hi: BytePos(8115), expn_id: ExpnId(4294967295) }
             },

ImplItem {
                 id: 3611,
                 ident: finalize#0,
                 vis: Public,
                 attrs: [Spanned {
                     node: Attribute_ { id: AttrId(198), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Finalizes a Notification.", CookedStr), span: Span { lo: BytePos(8121), hi: BytePos(8150), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(8121), hi: BytePos(8150), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(8121), hi: BytePos(8150), expn_id: ExpnId(4294967295) }
                 }, Spanned { node: Attribute_ { id: AttrId(199), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("///", CookedStr), span: Span { lo: BytePos(8155), hi: BytePos(8158), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(8155), hi: BytePos(8158), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(8155), hi: BytePos(8158), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(200), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Part of the builder pattern, returns a complete copy of the built notification.", CookedStr), span: Span { lo: BytePos(8163), hi: BytePos(8246), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(8163), hi: BytePos(8246), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(8163), hi: BytePos(8246), expn_id: ExpnId(4294967295) } }],
                 node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(3614: self), id: 3613 }], output: Return(type(Notification)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 3612, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutImmutable, self#0), span: Span { lo: BytePos(8267), hi: BytePos(8276), expn_id: ExpnId(4294967295) } } }, Block { stmts: [], expr: Some(expr(3618: Notification{appname: self.appname.clone(),
                 summary: self.summary.clone(),
                 body: self.body.clone(),
                 icon: self.icon.clone(),
                 hints: self.hints.clone(),
                 actions: self.actions.clone(),
                 timeout: self.timeout.clone(),
                 id: self.id.clone(),})), id: 3617, rules: DefaultBlock, span: Span { lo: BytePos(8290), hi: BytePos(8668), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(8251), hi: BytePos(8668), expn_id: ExpnId(4294967295) }
             },

ImplItem { id: 3643, ident: pack_hints#0, vis: Inherited, attrs: [], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(3646: self), id: 3645 }], output: Return(type(MessageItem)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 3644, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutImmutable, self#0), span: Span { lo: BytePos(8688), hi: BytePos(8697), expn_id: ExpnId(4294967295) } } }, Block { stmts: [stmt(3650: if !self.hints.is_empty() {
    let hints: Vec<MessageItem> =
        self.hints.iter().map(|hint| hint.into()).collect();
    if let Ok(array) = MessageItem::new_array(hints) { return array; }
}), stmt(3684: let sig = Cow::Borrowed("{sv}");), stmt(3690: return MessageItem::Array(<[_]>::into_vec(::std::boxed::Box::new([])), sig);)], expr: None, id: 3649, rules: DefaultBlock, span: Span { lo: BytePos(8710), hi: BytePos(9106), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(8674), hi: BytePos(9106), expn_id: ExpnId(4294967295) } }, ImplItem { id: 3702, ident: pack_actions#0, vis: Inherited, attrs: [], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(3705: self), id: 3704 }], output: Return(type(MessageItem)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 3703, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutImmutable, self#0), span: Span { lo: BytePos(9128), hi: BytePos(9137), expn_id: ExpnId(4294967295) } } }, Block { stmts: [stmt(3709: if !self.actions.is_empty() {
    let mut actions = <[_]>::into_vec(::std::boxed::Box::new([]));
    for action in self.actions.iter() {
        actions.push(action.to_owned().into());
    }
    if let Ok(array) = MessageItem::new_array(actions) { return array; }
}), stmt(3749: let sig = Cow::Borrowed("s");), stmt(3755: return MessageItem::Array(<[_]>::into_vec(::std::boxed::Box::new([])), sig);)], expr: None, id: 3708, rules: DefaultBlock, span: Span { lo: BytePos(9150), hi: BytePos(9606), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(9112), hi: BytePos(9606), expn_id: ExpnId(4294967295) } }, ImplItem { id: 3767, ident: show#0, vis: Public, attrs: [Spanned { node: Attribute_ { id: AttrId(201), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Sends Notification to D-Bus.", CookedStr), span: Span { lo: BytePos(9612), hi: BytePos(9644), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(9612), hi: BytePos(9644), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(9612), hi: BytePos(9644), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(202), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("///", CookedStr), span: Span { lo: BytePos(9649), hi: BytePos(9652), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(9649), hi: BytePos(9652), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(9649), hi: BytePos(9652), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(203), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Returns a handle to a notification", CookedStr), span: Span { lo: BytePos(9657), hi: BytePos(9695), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(9657), hi: BytePos(9695), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(9657), hi: BytePos(9695), expn_id: ExpnId(4294967295) } }], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(3770: self), id: 3769 }], output: Return(type(Result<NotificationHandle, Error>)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 3768, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutMutable, self#0), span: Span { lo: BytePos(9712), hi: BytePos(9725), expn_id: ExpnId(4294967295) } } }, Block { stmts: [stmt(3776: let connection =
    match Connection::get_private(BusType::Session) {
        ::std::result::Result::Ok(val) => val,
        ::std::result::Result::Err(err) => {
            return ::std::result::Result::Err(::std::convert::From::from(err))
        }
    };), stmt(3796: let id =
    match self._show(0, &connection) {
        ::std::result::Result::Ok(val) => val,
        ::std::result::Result::Err(err) => {
            return ::std::result::Result::Err(::std::convert::From::from(err))
        }
    };)], expr: Some(expr(3818: Ok(NotificationHandle::new(id, connection, self.clone())))), id: 3775, rules: DefaultBlock, span: Span { lo: BytePos(9760), hi: BytePos(9958), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(9700), hi: BytePos(9958), expn_id: ExpnId(4294967295) } }, ImplItem { id: 3826, ident: _show#0, vis: Inherited, attrs: [], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(3829: self), id: 3828 }, Arg { ty: type(u32), pat: pat(3832: id), id: 3831 }, Arg { ty: type(&Connection), pat: pat(3835: connection), id: 3834 }], output: Return(type(Result<u32, Error>)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 3827, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutMutable, self#0), span: Span { lo: BytePos(9973), hi: BytePos(10019), expn_id: ExpnId(4294967295) } } }, Block { stmts: [stmt(3842: let mut message = build_message("Notify");), stmt(3848: message.append_items(&[self.appname.to_owned().into(), id.into(),
                       self.icon.to_owned().into(),
                       self.summary.to_owned().into(),
                       self.body.to_owned().into(),
                       self.pack_actions().into(), self.pack_hints().into(),
                       self.timeout.into()]);), stmt(3880: let reply =
    match connection.send_with_reply_and_block(message, 2000) {
        ::std::result::Result::Ok(val) => val,
        ::std::result::Result::Err(err) => {
            return ::std::result::Result::Err(::std::convert::From::from(err))
        }
    };)], expr: Some(expr(3901: match reply.get_items().get(0) {
    Some(&MessageItem::UInt32(ref id)) => Ok(*id),
    _ => Ok(0),
})), id: 3841, rules: DefaultBlock, span: Span { lo: BytePos(10039), hi: BytePos(10974), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(9964), hi: BytePos(10974), expn_id: ExpnId(4294967295) } }, ImplItem { id: 3918, ident: show_debug#0, vis: Public, attrs: [Spanned { node: Attribute_ { id: AttrId(204), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Wraps show() but prints notification to stdout.", CookedStr), span: Span { lo: BytePos(10980), hi: BytePos(11031), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(10980), hi: BytePos(11031), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(10980), hi: BytePos(11031), expn_id: ExpnId(4294967295) } }], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(3921: self), id: 3920 }], output: Return(type(Result<NotificationHandle, Error>)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 3919, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutMutable, self#0), span: Span { lo: BytePos(11054), hi: BytePos(11067), expn_id: ExpnId(4294967295) } } }, Block { stmts: [stmt(3927: ::std::io::_print(::std::fmt::Arguments::new_v1_formatted({
                                                              static __STATIC_FMTSTR:
                                                                     &'static [&'static str]
                                                                     =
                                                                  &["Notification:\n",
                                                                    ": (",
                                                                    ") ", " ",
                                                                    "\nhints: [",
                                                                    "]\n\n"];
                                                              __STATIC_FMTSTR
                                                          },
                                                          &match (&self.appname,
                                                                  &self.summary,
                                                                  &self.body,
                                                                  &self.hints,
                                                                  &self.icon)
                                                               {
                                                               (__argappname,
                                                                __argsummary,
                                                                __argbody,
                                                                __arghints,
                                                                __argicon) =>
                                                               [::std::fmt::ArgumentV1::new(__argappname,
                                                                                            ::std::fmt::Display::fmt),
                                                                ::std::fmt::ArgumentV1::new(__argicon,
                                                                                            ::std::fmt::Display::fmt),
                                                                ::std::fmt::ArgumentV1::new(__argsummary,
                                                                                            ::std::fmt::Debug::fmt),
                                                                ::std::fmt::ArgumentV1::new(__argbody,
                                                                                            ::std::fmt::Debug::fmt),
                                                                ::std::fmt::ArgumentV1::new(__arghints,
                                                                                            ::std::fmt::Debug::fmt)],
                                                           },
                                                          {
                                                              static __STATIC_FMTARGS:
                                                                     &'static [::std::fmt::rt::v1::Argument]
                                                                     =
                                                                  &[::std::fmt::rt::v1::Argument{position:
                                                                                                     ::std::fmt::rt::v1::Position::At(0usize),
                                                                                                 format:
                                                                                                     ::std::fmt::rt::v1::FormatSpec{fill:
                                                                                                                                        ' ',
                                                                                                                                    align:
                                                                                                                                        ::std::fmt::rt::v1::Alignment::Unknown,
                                                                                                                                    flags:
                                                                                                                                        0u32,
                                                                                                                                    precision:
                                                                                                                                        ::std::fmt::rt::v1::Count::Implied,
                                                                                                                                    width:
                                                                                                                                        ::std::fmt::rt::v1::Count::Implied,},},
                                                                    ::std::fmt::rt::v1::Argument{position:
                                                                                                     ::std::fmt::rt::v1::Position::At(1usize),
                                                                                                 format:
                                                                                                     ::std::fmt::rt::v1::FormatSpec{fill:
                                                                                                                                        ' ',
                                                                                                                                    align:
                                                                                                                                        ::std::fmt::rt::v1::Alignment::Unknown,
                                                                                                                                    flags:
                                                                                                                                        0u32,
                                                                                                                                    precision:
                                                                                                                                        ::std::fmt::rt::v1::Count::Implied,
                                                                                                                                    width:
                                                                                                                                        ::std::fmt::rt::v1::Count::Implied,},},
                                                                    ::std::fmt::rt::v1::Argument{position:
                                                                                                     ::std::fmt::rt::v1::Position::At(2usize),
                                                                                                 format:
                                                                                                     ::std::fmt::rt::v1::FormatSpec{fill:
                                                                                                                                        ' ',
                                                                                                                                    align:
                                                                                                                                        ::std::fmt::rt::v1::Alignment::Unknown,
                                                                                                                                    flags:
                                                                                                                                        0u32,
                                                                                                                                    precision:
                                                                                                                                        ::std::fmt::rt::v1::Count::Implied,
                                                                                                                                    width:
                                                                                                                                        ::std::fmt::rt::v1::Count::Implied,},},
                                                                    ::std::fmt::rt::v1::Argument{position:
                                                                                                     ::std::fmt::rt::v1::Position::At(3usize),
                                                                                                 format:
                                                                                                     ::std::fmt::rt::v1::FormatSpec{fill:
                                                                                                                                        ' ',
                                                                                                                                    align:
                                                                                                                                        ::std::fmt::rt::v1::Alignment::Unknown,
                                                                                                                                    flags:
                                                                                                                                        0u32,
                                                                                                                                    precision:
                                                                                                                                        ::std::fmt::rt::v1::Count::Implied,
                                                                                                                                    width:
                                                                                                                                        ::std::fmt::rt::v1::Count::Implied,},},
                                                                    ::std::fmt::rt::v1::Argument{position:
                                                                                                     ::std::fmt::rt::v1::Position::At(4usize),
                                                                                                 format:
                                                                                                     ::std::fmt::rt::v1::FormatSpec{fill:
                                                                                                                                        ' ',
                                                                                                                                    align:
                                                                                                                                        ::std::fmt::rt::v1::Alignment::Unknown,
                                                                                                                                    flags:
                                                                                                                                        0u32,
                                                                                                                                    precision:
                                                                                                                                        ::std::fmt::rt::v1::Count::Implied,
                                                                                                                                    width:
                                                                                                                                        ::std::fmt::rt::v1::Count::Implied,},}];
                                                              __STATIC_FMTARGS
                                                          }));)], expr: Some(expr(4057: self.show())), id: 3926, rules: DefaultBlock, span: Span { lo: BytePos(11102), hi: BytePos(11401), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(11036), hi: BytePos(11401), expn_id: ExpnId(4294967295) } }]), vis: Inherited, span: Span { lo: BytePos(3939), hi: BytePos(11403), expn_id: ExpnId(4294967295) } }
Item { ident: __STATIC_FMTSTR#421, attrs: [], id: 3935, node: ItemStatic(type(&'static [&'static str]), MutImmutable, expr(3942: &["Notification:\n", ": (", ") ", " ", "\nhints: [", "]\n\n"])), vis: Inherited, span: Span { lo: BytePos(41345), hi: BytePos(41370), expn_id: ExpnId(185) } }
Item { ident: __STATIC_FMTARGS#421, attrs: [], id: 3999, node: ItemStatic(type(&'static [::std::fmt::rt::v1::Argument]), MutImmutable, expr(4004: &[::std::fmt::rt::v1::Argument{position:
                                   ::std::fmt::rt::v1::Position::At(0usize),
                               format:
                                   ::std::fmt::rt::v1::FormatSpec{fill: ' ',
                                                                  align:
                                                                      ::std::fmt::rt::v1::Alignment::Unknown,
                                                                  flags: 0u32,
                                                                  precision:
                                                                      ::std::fmt::rt::v1::Count::Implied,
                                                                  width:
                                                                      ::std::fmt::rt::v1::Count::Implied,},},
  ::std::fmt::rt::v1::Argument{position:
                                   ::std::fmt::rt::v1::Position::At(1usize),
                               format:
                                   ::std::fmt::rt::v1::FormatSpec{fill: ' ',
                                                                  align:
                                                                      ::std::fmt::rt::v1::Alignment::Unknown,
                                                                  flags: 0u32,
                                                                  precision:
                                                                      ::std::fmt::rt::v1::Count::Implied,
                                                                  width:
                                                                      ::std::fmt::rt::v1::Count::Implied,},},
  ::std::fmt::rt::v1::Argument{position:
                                   ::std::fmt::rt::v1::Position::At(2usize),
                               format:
                                   ::std::fmt::rt::v1::FormatSpec{fill: ' ',
                                                                  align:
                                                                      ::std::fmt::rt::v1::Alignment::Unknown,
                                                                  flags: 0u32,
                                                                  precision:
                                                                      ::std::fmt::rt::v1::Count::Implied,
                                                                  width:
                                                                      ::std::fmt::rt::v1::Count::Implied,},},
  ::std::fmt::rt::v1::Argument{position:
                                   ::std::fmt::rt::v1::Position::At(3usize),
                               format:
                                   ::std::fmt::rt::v1::FormatSpec{fill: ' ',
                                                                  align:
                                                                      ::std::fmt::rt::v1::Alignment::Unknown,
                                                                  flags: 0u32,
                                                                  precision:
                                                                      ::std::fmt::rt::v1::Count::Implied,
                                                                  width:
                                                                      ::std::fmt::rt::v1::Count::Implied,},},
  ::std::fmt::rt::v1::Argument{position:
                                   ::std::fmt::rt::v1::Position::At(4usize),
                               format:
                                   ::std::fmt::rt::v1::FormatSpec{fill: ' ',
                                                                  align:
                                                                      ::std::fmt::rt::v1::Alignment::Unknown,
                                                                  flags: 0u32,
                                                                  precision:
                                                                      ::std::fmt::rt::v1::Count::Implied,
                                                                  width:
                                                                      ::std::fmt::rt::v1::Count::Implied,},}])), vis: Inherited, span: Span { lo: BytePos(41190), hi: BytePos(41221), expn_id: ExpnId(185) } }
Item { ident: NotificationHandle#0, attrs: [Spanned { node: Attribute_ { id: AttrId(205), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// A handle to a shown notification.", CookedStr), span: Span { lo: BytePos(11408), hi: BytePos(11445), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(11408), hi: BytePos(11445), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(11408), hi: BytePos(11445), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(206), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("///", CookedStr), span: Span { lo: BytePos(11446), hi: BytePos(11449), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(11446), hi: BytePos(11449), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(11446), hi: BytePos(11449), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(207), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// This keeps a connection alive to ensure actions work on certain desktops.", CookedStr), span: Span { lo: BytePos(11450), hi: BytePos(11527), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(11450), hi: BytePos(11527), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(11450), hi: BytePos(11527), expn_id: ExpnId(4294967295) } }], id: 4061, node: ItemStruct(Struct([Spanned { node: StructField_ { kind: NamedField(id#0, Inherited), id: 4062, ty: type(u32), attrs: [] }, span: Span { lo: BytePos(11581), hi: BytePos(11588), expn_id: ExpnId(4294967295) } }, Spanned { node: StructField_ { kind: NamedField(connection#0, Inherited), id: 4064, ty: type(Connection), attrs: [] }, span: Span { lo: BytePos(11594), hi: BytePos(11616), expn_id: ExpnId(4294967295) } }, Spanned { node: StructField_ { kind: NamedField(notification#0, Inherited), id: 4066, ty: type(Notification), attrs: [] }, span: Span { lo: BytePos(11622), hi: BytePos(11648), expn_id: ExpnId(4294967295) } }], 4068), Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 4069, predicates: [] } }), vis: Public, span: Span { lo: BytePos(11545), hi: BytePos(11650), expn_id: ExpnId(4294967295) } }
Item { ident: NotificationHandle.::std::fmt::Debug#0, attrs: [Spanned { node: Attribute_ { id: AttrId(1217), style: Outer, value: Spanned { node: MetaWord("automatically_derived"), span: Span { lo: BytePos(11537), hi: BytePos(11542), expn_id: ExpnId(188) } }, is_sugared_doc: false }, span: Span { lo: BytePos(11537), hi: BytePos(11542), expn_id: ExpnId(188) } }, Spanned { node: Attribute_ { id: AttrId(1218), style: Outer, value: Spanned { node: MetaList("allow", [Spanned { node: MetaWord("unused_qualifications"), span: Span { lo: BytePos(11537), hi: BytePos(11542), expn_id: ExpnId(188) } }]), span: Span { lo: BytePos(11537), hi: BytePos(11542), expn_id: ExpnId(188) } }, is_sugared_doc: false }, span: Span { lo: BytePos(11537), hi: BytePos(11542), expn_id: ExpnId(188) } }], id: 4070, node: ItemImpl(Normal, "positive", Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 4133, predicates: [] } }, Some(TraitRef { path: path(::std::fmt::Debug), ref_id: 4132 }), type(NotificationHandle), [ImplItem { id: 4071, ident: fmt#0, vis: Inherited, attrs: [], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(4074: self), id: 4073 }, Arg { ty: type(&mut ::std::fmt::Formatter), pat: pat(4077: __arg_0), id: 4076 }], output: Return(type(::std::fmt::Result)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 4072, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutImmutable, self#0), span: Span { lo: BytePos(11537), hi: BytePos(11542), expn_id: ExpnId(188) } } }, Block { stmts: [], expr: Some(expr(4082: match *self {
    NotificationHandle {
    id: ref __self_0_0,
    connection: ref __self_0_1,
    notification: ref __self_0_2 } => {
        let mut builder = __arg_0.debug_struct("NotificationHandle");
        let _ = builder.field("id", &&(*__self_0_0));
        let _ = builder.field("connection", &&(*__self_0_1));
        let _ = builder.field("notification", &&(*__self_0_2));
        builder.finish()
    }
})), id: 4081, rules: DefaultBlock, span: Span { lo: BytePos(11537), hi: BytePos(11542), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(11537), hi: BytePos(11542), expn_id: ExpnId(188) } }]), vis: Inherited, span: Span { lo: BytePos(11537), hi: BytePos(11542), expn_id: ExpnId(188) } }
Item { ident: NotificationHandle#0, attrs: [], id: 4135, node: ItemImpl(Normal, "positive", Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 4222, predicates: [] } }, None, type(NotificationHandle), [ImplItem { id: 4136, ident: new#0, vis: Inherited, attrs: [], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(u32), pat: pat(4139: id), id: 4138 }, Arg { ty: type(Connection), pat: pat(4142: connection), id: 4141 }, Arg { ty: type(Notification), pat: pat(4145: notification), id: 4144 }], output: Return(type(NotificationHandle)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 4137, predicates: [] } }, explicit_self: Spanned { node: SelfStatic, span: Span { lo: BytePos(11689), hi: BytePos(11752), expn_id: ExpnId(4294967295) } } }, Block { stmts: [], expr: Some(expr(4149: NotificationHandle{id: id,
                   connection: connection,
                   notification: notification,})), id: 4148, rules: DefaultBlock, span: Span { lo: BytePos(11772), hi: BytePos(11913), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(11682), hi: BytePos(11913), expn_id: ExpnId(4294967295) } }, ImplItem { id: 4153, ident: wait_for_action#0, vis: Public, attrs: [Spanned { node: Attribute_ { id: AttrId(209), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Waits for the user to act on a notification and then calls", CookedStr), span: Span { lo: BytePos(11919), hi: BytePos(11981), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(11919), hi: BytePos(11981), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(11919), hi: BytePos(11981), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(210), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// `invokation_closure` with the name of the corresponding action.", CookedStr), span: Span { lo: BytePos(11986), hi: BytePos(12053), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(11986), hi: BytePos(12053), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(11986), hi: BytePos(12053), expn_id: ExpnId(4294967295) } }], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(4161: self), id: 4160 }, Arg { ty: type(F), pat: pat(4164: invokation_closure), id: 4163 }], output: DefaultReturn(Span { lo: BytePos(12112), hi: BytePos(12112), expn_id: ExpnId(4294967295) }), variadic: false }, generics: Generics { lifetimes: [], ty_params: [TyParam { ident: F#0, id: 4154, bounds: [], default: None, span: Span { lo: BytePos(12081), hi: BytePos(12082), expn_id: ExpnId(4294967295) } }], where_clause: WhereClause { id: 4155, predicates: [BoundPredicate(WhereBoundPredicate { span: Span { lo: BytePos(12118), hi: BytePos(12132), expn_id: ExpnId(4294967295) }, bound_lifetimes: [], bounded_ty: type(F), bounds: [TraitTyParamBound(PolyTraitRef { bound_lifetimes: [], trait_ref: TraitRef { path: path(FnOnce(&str)), ref_id: 4157 }, span: Span { lo: BytePos(12120), hi: BytePos(12132), expn_id: ExpnId(4294967295) } }, None)] })] } }, explicit_self: Spanned { node: SelfValue(self#0), span: Span { lo: BytePos(12084), hi: BytePos(12117), expn_id: ExpnId(4294967295) } } }, Block { stmts: [stmt(4167: wait_for_action_signal(&self.connection, self.id, invokation_closure);)], expr: None, id: 4166, rules: DefaultBlock, span: Span { lo: BytePos(12133), hi: BytePos(12219), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(12058), hi: BytePos(12219), expn_id: ExpnId(4294967295) } }, ImplItem { id: 4176, ident: close#0, vis: Public, attrs: [Spanned { node: Attribute_ { id: AttrId(211), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Manually close the notification", CookedStr), span: Span { lo: BytePos(12225), hi: BytePos(12260), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(12225), hi: BytePos(12260), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(12225), hi: BytePos(12260), expn_id: ExpnId(4294967295) } }], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(4179: self), id: 4178 }], output: DefaultReturn(Span { lo: BytePos(12284), hi: BytePos(12284), expn_id: ExpnId(4294967295) }), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 4177, predicates: [] } }, explicit_self: Spanned { node: SelfValue(self#0), span: Span { lo: BytePos(12278), hi: BytePos(12285), expn_id: ExpnId(4294967295) } } }, Block { stmts: [stmt(4182: let mut message = build_message("CloseNotification");), stmt(4188: message.append_items(&[self.id.into()]);), stmt(4196: let _ = self.connection.send(message);)], expr: None, id: 4181, rules: DefaultBlock, span: Span { lo: BytePos(12284), hi: BytePos(12506), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(12265), hi: BytePos(12506), expn_id: ExpnId(4294967295) } }, ImplItem { id: 4203, ident: update#0, vis: Public, attrs: [Spanned { node: Attribute_ { id: AttrId(212), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Replace the original notification with an updated version", CookedStr), span: Span { lo: BytePos(12512), hi: BytePos(12573), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(12512), hi: BytePos(12573), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(12512), hi: BytePos(12573), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(213), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// ## Example", CookedStr), span: Span { lo: BytePos(12578), hi: BytePos(12592), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(12578), hi: BytePos(12592), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(12578), hi: BytePos(12592), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(214), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// ```no_run", CookedStr), span: Span { lo: BytePos(12597), hi: BytePos(12610), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(12597), hi: BytePos(12610), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(12597), hi: BytePos(12610), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(215), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// # use notify_rust::Notification;", CookedStr), span: Span { lo: BytePos(12615), hi: BytePos(12651), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(12615), hi: BytePos(12651), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(12615), hi: BytePos(12651), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(216), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// let mut notification = Notification::new()", CookedStr), span: Span { lo: BytePos(12656), hi: BytePos(12702), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(12656), hi: BytePos(12702), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(12656), hi: BytePos(12702), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(217), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("///     .summary(\"Latest News\")", CookedStr), span: Span { lo: BytePos(12707), hi: BytePos(12738), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(12707), hi: BytePos(12738), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(12707), hi: BytePos(12738), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(218), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("///     .body(\"Bayern Dortmund 3:2\")", CookedStr), span: Span { lo: BytePos(12743), hi: BytePos(12779), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(12743), hi: BytePos(12779), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(12743), hi: BytePos(12779), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(219), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("///     .show().unwrap();", CookedStr), span: Span { lo: BytePos(12784), hi: BytePos(12809), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(12784), hi: BytePos(12809), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(12784), hi: BytePos(12809), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(220), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("///", CookedStr), span: Span { lo: BytePos(12814), hi: BytePos(12817), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(12814), hi: BytePos(12817), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(12814), hi: BytePos(12817), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(221), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// std::thread::sleep_ms(1_500);", CookedStr), span: Span { lo: BytePos(12822), hi: BytePos(12855), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(12822), hi: BytePos(12855), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(12822), hi: BytePos(12855), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(222), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("///", CookedStr), span: Span { lo: BytePos(12860), hi: BytePos(12863), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(12860), hi: BytePos(12863), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(12860), hi: BytePos(12863), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(223), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// notification", CookedStr), span: Span { lo: BytePos(12868), hi: BytePos(12884), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(12868), hi: BytePos(12884), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(12868), hi: BytePos(12884), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(224), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("///     .summary(\"Latest News (Correction)\")", CookedStr), span: Span { lo: BytePos(12889), hi: BytePos(12933), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(12889), hi: BytePos(12933), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(12889), hi: BytePos(12933), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(225), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("///     .body(\"Bayern Dortmund 3:3\");", CookedStr), span: Span { lo: BytePos(12938), hi: BytePos(12975), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(12938), hi: BytePos(12975), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(12938), hi: BytePos(12975), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(226), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("///", CookedStr), span: Span { lo: BytePos(12980), hi: BytePos(12983), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(12980), hi: BytePos(12983), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(12980), hi: BytePos(12983), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(227), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// notification.update();", CookedStr), span: Span { lo: BytePos(12988), hi: BytePos(13014), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(12988), hi: BytePos(13014), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(12988), hi: BytePos(13014), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(228), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// ```", CookedStr), span: Span { lo: BytePos(13019), hi: BytePos(13026), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(13019), hi: BytePos(13026), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(13019), hi: BytePos(13026), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(229), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Watch out for different implementations of the", CookedStr), span: Span { lo: BytePos(13031), hi: BytePos(13081), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(13031), hi: BytePos(13081), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(13031), hi: BytePos(13081), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(230), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// notification server! On plasma5 or instance, you should also change the appname, so the old", CookedStr), span: Span { lo: BytePos(13086), hi: BytePos(13181), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(13086), hi: BytePos(13181), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(13086), hi: BytePos(13181), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(231), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// message is really replaced and not just amended. Xfce behaves well, all others have not", CookedStr), span: Span { lo: BytePos(13186), hi: BytePos(13277), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(13186), hi: BytePos(13277), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(13186), hi: BytePos(13277), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(232), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// been tested by the developer.", CookedStr), span: Span { lo: BytePos(13282), hi: BytePos(13315), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(13282), hi: BytePos(13315), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(13282), hi: BytePos(13315), expn_id: ExpnId(4294967295) } }], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(4206: self), id: 4205 }], output: DefaultReturn(Span { lo: BytePos(13345), hi: BytePos(13345), expn_id: ExpnId(4294967295) }), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 4204, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutMutable, self#0), span: Span { lo: BytePos(13334), hi: BytePos(13346), expn_id: ExpnId(4294967295) } } }, Block { stmts: [stmt(4209: self.id = self.notification._show(self.id, &self.connection).unwrap();)], expr: None, id: 4208, rules: DefaultBlock, span: Span { lo: BytePos(13345), hi: BytePos(13431), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(13320), hi: BytePos(13431), expn_id: ExpnId(4294967295) } }]), vis: Inherited, span: Span { lo: BytePos(11652), hi: BytePos(13433), expn_id: ExpnId(4294967295) } }
Item { ident: NotificationHandle.Deref#0, attrs: [Spanned { node: Attribute_ { id: AttrId(233), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Required for DerefMut", CookedStr), span: Span { lo: BytePos(13435), hi: BytePos(13460), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(13435), hi: BytePos(13460), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(13435), hi: BytePos(13460), expn_id: ExpnId(4294967295) } }], id: 4224, node: ItemImpl(Normal, "positive", Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 4239, predicates: [] } }, Some(TraitRef { path: path(Deref), ref_id: 4238 }), type(NotificationHandle), [ImplItem { id: 4225, ident: Target#0, vis: Inherited, attrs: [], node: Type(type(Notification)), span: Span { lo: BytePos(13501), hi: BytePos(13528), expn_id: ExpnId(4294967295) } }, ImplItem { id: 4227, ident: deref#0, vis: Inherited, attrs: [], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(4230: self), id: 4229 }], output: Return(type(&Notification)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 4228, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutImmutable, self#0), span: Span { lo: BytePos(13542), hi: BytePos(13551), expn_id: ExpnId(4294967295) } } }, Block { stmts: [], expr: Some(expr(4235: &self.notification)), id: 4234, rules: DefaultBlock, span: Span { lo: BytePos(13566), hi: BytePos(13600), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(13533), hi: BytePos(13600), expn_id: ExpnId(4294967295) } }]), vis: Inherited, span: Span { lo: BytePos(13461), hi: BytePos(13602), expn_id: ExpnId(4294967295) } }
Item { ident: NotificationHandle.DerefMut#0, attrs: [Spanned { node: Attribute_ { id: AttrId(234), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Allow to easily modify notification properties", CookedStr), span: Span { lo: BytePos(13604), hi: BytePos(13654), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(13604), hi: BytePos(13654), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(13604), hi: BytePos(13654), expn_id: ExpnId(4294967295) } }], id: 4241, node: ItemImpl(Normal, "positive", Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 4254, predicates: [] } }, Some(TraitRef { path: path(DerefMut), ref_id: 4253 }), type(NotificationHandle), [ImplItem { id: 4242, ident: deref_mut#0, vis: Inherited, attrs: [], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(4245: self), id: 4244 }], output: Return(type(&mut Notification)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 4243, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutMutable, self#0), span: Span { lo: BytePos(13711), hi: BytePos(13724), expn_id: ExpnId(4294967295) } } }, Block { stmts: [], expr: Some(expr(4250: &mut self.notification)), id: 4249, rules: DefaultBlock, span: Span { lo: BytePos(13743), hi: BytePos(13781), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(13698), hi: BytePos(13781), expn_id: ExpnId(4294967295) } }]), vis: Inherited, span: Span { lo: BytePos(13655), hi: BytePos(13783), expn_id: ExpnId(4294967295) } }
Item { ident: NotificationUrgency#0, attrs: [Spanned { node: Attribute_ { id: AttrId(235), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Levels of Urgency.", CookedStr), span: Span { lo: BytePos(13788), hi: BytePos(13810), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(13788), hi: BytePos(13810), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(13788), hi: BytePos(13810), expn_id: ExpnId(4294967295) } }], id: 4256, node: ItemEnum(EnumDef { variants: [Spanned { node: Variant_ { name: Low#0, attrs: [Spanned { node: Attribute_ { id: AttrId(237), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// The behaviour for `Low` urgency depends on the notification server.", CookedStr), span: Span { lo: BytePos(13896), hi: BytePos(13967), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(13896), hi: BytePos(13967), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(13896), hi: BytePos(13967), expn_id: ExpnId(4294967295) } }], data: Unit(4257), disr_expr: Some(expr(4258: 0)) }, span: Span { lo: BytePos(13972), hi: BytePos(13979), expn_id: ExpnId(4294967295) } }, Spanned { node: Variant_ { name: Normal#0, attrs: [Spanned { node: Attribute_ { id: AttrId(238), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// The behaviour for `Normal` urgency depends on the notification server.", CookedStr), span: Span { lo: BytePos(13985), hi: BytePos(14059), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(13985), hi: BytePos(14059), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(13985), hi: BytePos(14059), expn_id: ExpnId(4294967295) } }], data: Unit(4259), disr_expr: Some(expr(4260: 1)) }, span: Span { lo: BytePos(14064), hi: BytePos(14074), expn_id: ExpnId(4294967295) } }, Spanned { node: Variant_ { name: Critical#0, attrs: [Spanned { node: Attribute_ { id: AttrId(239), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// A critical notification will not time out.", CookedStr), span: Span { lo: BytePos(14080), hi: BytePos(14126), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(14080), hi: BytePos(14126), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(14080), hi: BytePos(14126), expn_id: ExpnId(4294967295) } }], data: Unit(4261), disr_expr: Some(expr(4262: 2)) }, span: Span { lo: BytePos(14131), hi: BytePos(14143), expn_id: ExpnId(4294967295) } }] }, Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 4263, predicates: [] } }), vis: Public, span: Span { lo: BytePos(13862), hi: BytePos(14145), expn_id: ExpnId(4294967295) } }
Item { ident: NotificationUrgency.::std::fmt::Debug#0, attrs: [Spanned { node: Attribute_ { id: AttrId(1225), style: Outer, value: Spanned { node: MetaWord("automatically_derived"), span: Span { lo: BytePos(13854), hi: BytePos(13859), expn_id: ExpnId(193) } }, is_sugared_doc: false }, span: Span { lo: BytePos(13854), hi: BytePos(13859), expn_id: ExpnId(193) } }, Spanned { node: Attribute_ { id: AttrId(1226), style: Outer, value: Spanned { node: MetaList("allow", [Spanned { node: MetaWord("unused_qualifications"), span: Span { lo: BytePos(13854), hi: BytePos(13859), expn_id: ExpnId(193) } }]), span: Span { lo: BytePos(13854), hi: BytePos(13859), expn_id: ExpnId(193) } }, is_sugared_doc: false }, span: Span { lo: BytePos(13854), hi: BytePos(13859), expn_id: ExpnId(193) } }], id: 4264, node: ItemImpl(Normal, "positive", Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 4321, predicates: [] } }, Some(TraitRef { path: path(::std::fmt::Debug), ref_id: 4320 }), type(NotificationUrgency), [ImplItem { id: 4265, ident: fmt#0, vis: Inherited, attrs: [], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(4268: self), id: 4267 }, Arg { ty: type(&mut ::std::fmt::Formatter), pat: pat(4271: __arg_0), id: 4270 }], output: Return(type(::std::fmt::Result)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 4266, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutImmutable, self#0), span: Span { lo: BytePos(13854), hi: BytePos(13859), expn_id: ExpnId(193) } } }, Block { stmts: [], expr: Some(expr(4276: match (&*self,) {
    (&NotificationUrgency::Low,) => {
        let mut builder = __arg_0.debug_tuple("Low");
        builder.finish()
    }
    (&NotificationUrgency::Normal,) => {
        let mut builder = __arg_0.debug_tuple("Normal");
        builder.finish()
    }
    (&NotificationUrgency::Critical,) => {
        let mut builder = __arg_0.debug_tuple("Critical");
        builder.finish()
    }
})), id: 4275, rules: DefaultBlock, span: Span { lo: BytePos(13854), hi: BytePos(13859), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(13854), hi: BytePos(13859), expn_id: ExpnId(193) } }]), vis: Inherited, span: Span { lo: BytePos(13854), hi: BytePos(13859), expn_id: ExpnId(193) } }
Item { ident: NotificationUrgency.::std::clone::Clone#0, attrs: [Spanned { node: Attribute_ { id: AttrId(1228), style: Outer, value: Spanned { node: MetaWord("automatically_derived"), span: Span { lo: BytePos(13847), hi: BytePos(13852), expn_id: ExpnId(194) } }, is_sugared_doc: false }, span: Span { lo: BytePos(13847), hi: BytePos(13852), expn_id: ExpnId(194) } }, Spanned { node: Attribute_ { id: AttrId(1229), style: Outer, value: Spanned { node: MetaList("allow", [Spanned { node: MetaWord("unused_qualifications"), span: Span { lo: BytePos(13847), hi: BytePos(13852), expn_id: ExpnId(194) } }]), span: Span { lo: BytePos(13847), hi: BytePos(13852), expn_id: ExpnId(194) } }, is_sugared_doc: false }, span: Span { lo: BytePos(13847), hi: BytePos(13852), expn_id: ExpnId(194) } }], id: 4323, node: ItemImpl(Normal, "positive", Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 4349, predicates: [] } }, Some(TraitRef { path: path(::std::clone::Clone), ref_id: 4348 }), type(NotificationUrgency), [ImplItem { id: 4324, ident: clone#0, vis: Inherited, attrs: [Spanned { node: Attribute_ { id: AttrId(1227), style: Outer, value: Spanned { node: MetaWord("inline"), span: Span { lo: BytePos(13847), hi: BytePos(13852), expn_id: ExpnId(4294967295) } }, is_sugared_doc: false }, span: Span { lo: BytePos(13847), hi: BytePos(13852), expn_id: ExpnId(4294967295) } }], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(4327: self), id: 4326 }], output: Return(type(NotificationUrgency)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 4325, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutImmutable, self#0), span: Span { lo: BytePos(13847), hi: BytePos(13852), expn_id: ExpnId(194) } } }, Block { stmts: [], expr: Some(expr(4331: match (&*self,) {
    (&NotificationUrgency::Low,) => NotificationUrgency::Low,
    (&NotificationUrgency::Normal,) => NotificationUrgency::Normal,
    (&NotificationUrgency::Critical,) => NotificationUrgency::Critical,
})), id: 4330, rules: DefaultBlock, span: Span { lo: BytePos(13847), hi: BytePos(13852), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(13847), hi: BytePos(13852), expn_id: ExpnId(194) } }]), vis: Inherited, span: Span { lo: BytePos(13847), hi: BytePos(13852), expn_id: ExpnId(194) } }
Item { ident: NotificationUrgency.::std::marker::Copy#0, attrs: [Spanned { node: Attribute_ { id: AttrId(1230), style: Outer, value: Spanned { node: MetaWord("automatically_derived"), span: Span { lo: BytePos(13841), hi: BytePos(13845), expn_id: ExpnId(195) } }, is_sugared_doc: false }, span: Span { lo: BytePos(13841), hi: BytePos(13845), expn_id: ExpnId(195) } }, Spanned { node: Attribute_ { id: AttrId(1231), style: Outer, value: Spanned { node: MetaList("allow", [Spanned { node: MetaWord("unused_qualifications"), span: Span { lo: BytePos(13841), hi: BytePos(13845), expn_id: ExpnId(195) } }]), span: Span { lo: BytePos(13841), hi: BytePos(13845), expn_id: ExpnId(195) } }, is_sugared_doc: false }, span: Span { lo: BytePos(13841), hi: BytePos(13845), expn_id: ExpnId(195) } }], id: 4351, node: ItemImpl(Normal, "positive", Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 4353, predicates: [] } }, Some(TraitRef { path: path(::std::marker::Copy), ref_id: 4352 }), type(NotificationUrgency), []), vis: Inherited, span: Span { lo: BytePos(13841), hi: BytePos(13845), expn_id: ExpnId(195) } }
Item { ident: NotificationUrgency.::std::hash::Hash#0, attrs: [Spanned { node: Attribute_ { id: AttrId(1232), style: Outer, value: Spanned { node: MetaWord("automatically_derived"), span: Span { lo: BytePos(13835), hi: BytePos(13839), expn_id: ExpnId(196) } }, is_sugared_doc: false }, span: Span { lo: BytePos(13835), hi: BytePos(13839), expn_id: ExpnId(196) } }, Spanned { node: Attribute_ { id: AttrId(1233), style: Outer, value: Spanned { node: MetaList("allow", [Spanned { node: MetaWord("unused_qualifications"), span: Span { lo: BytePos(13835), hi: BytePos(13839), expn_id: ExpnId(196) } }]), span: Span { lo: BytePos(13835), hi: BytePos(13839), expn_id: ExpnId(196) } }, is_sugared_doc: false }, span: Span { lo: BytePos(13835), hi: BytePos(13839), expn_id: ExpnId(196) } }], id: 4355, node: ItemImpl(Normal, "positive", Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 4408, predicates: [] } }, Some(TraitRef { path: path(::std::hash::Hash), ref_id: 4407 }), type(NotificationUrgency), [ImplItem { id: 4356, ident: hash#0, vis: Inherited, attrs: [], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(4361: self), id: 4360 }, Arg { ty: type(&mut __H), pat: pat(4364: __arg_0), id: 4363 }], output: Return(type(())), variadic: false }, generics: Generics { lifetimes: [], ty_params: [TyParam { ident: __H#0, id: 4357, bounds: [TraitTyParamBound(PolyTraitRef { bound_lifetimes: [], trait_ref: TraitRef { path: path(::std::hash::Hasher), ref_id: 4358 }, span: Span { lo: BytePos(13835), hi: BytePos(13839), expn_id: ExpnId(196) } }, None)], default: None, span: Span { lo: BytePos(13835), hi: BytePos(13839), expn_id: ExpnId(4294967295) } }], where_clause: WhereClause { id: 4359, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutImmutable, self#0), span: Span { lo: BytePos(13835), hi: BytePos(13839), expn_id: ExpnId(196) } } }, Block { stmts: [], expr: Some(expr(4369: match (&*self,) {
    (&NotificationUrgency::Low,) => { ::std::hash::Hash::hash(&0, __arg_0); }
    (&NotificationUrgency::Normal,) => {
        ::std::hash::Hash::hash(&1, __arg_0);
    }
    (&NotificationUrgency::Critical,) => {
        ::std::hash::Hash::hash(&2, __arg_0);
    }
})), id: 4368, rules: DefaultBlock, span: Span { lo: BytePos(13835), hi: BytePos(13839), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(13835), hi: BytePos(13839), expn_id: ExpnId(196) } }]), vis: Inherited, span: Span { lo: BytePos(13835), hi: BytePos(13839), expn_id: ExpnId(196) } }
Item { ident: NotificationUrgency.::std::cmp::PartialEq#0, attrs: [Spanned { node: Attribute_ { id: AttrId(1236), style: Outer, value: Spanned { node: MetaWord("automatically_derived"), span: Span { lo: BytePos(13824), hi: BytePos(13833), expn_id: ExpnId(197) } }, is_sugared_doc: false }, span: Span { lo: BytePos(13824), hi: BytePos(13833), expn_id: ExpnId(197) } }, Spanned { node: Attribute_ { id: AttrId(1237), style: Outer, value: Spanned { node: MetaList("allow", [Spanned { node: MetaWord("unused_qualifications"), span: Span { lo: BytePos(13824), hi: BytePos(13833), expn_id: ExpnId(197) } }]), span: Span { lo: BytePos(13824), hi: BytePos(13833), expn_id: ExpnId(197) } }, is_sugared_doc: false }, span: Span { lo: BytePos(13824), hi: BytePos(13833), expn_id: ExpnId(197) } }], id: 4410, node: ItemImpl(Normal, "positive", Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 4568, predicates: [] } }, Some(TraitRef { path: path(::std::cmp::PartialEq), ref_id: 4567 }), type(NotificationUrgency), [ImplItem { id: 4411, ident: eq#0, vis: Inherited, attrs: [Spanned { node: Attribute_ { id: AttrId(1234), style: Outer, value: Spanned { node: MetaWord("inline"), span: Span { lo: BytePos(13824), hi: BytePos(13833), expn_id: ExpnId(4294967295) } }, is_sugared_doc: false }, span: Span { lo: BytePos(13824), hi: BytePos(13833), expn_id: ExpnId(4294967295) } }], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(4414: self), id: 4413 }, Arg { ty: type(&NotificationUrgency), pat: pat(4417: __arg_0), id: 4416 }], output: Return(type(bool)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 4412, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutImmutable, self#0), span: Span { lo: BytePos(13824), hi: BytePos(13833), expn_id: ExpnId(197) } } }, Block { stmts: [], expr: Some(expr(4422: {
    let __self_vi =
        unsafe { ::std::intrinsics::discriminant_value(&*self) } as i32;
    let __arg_1_vi =
        unsafe { ::std::intrinsics::discriminant_value(&*__arg_0) } as i32;
    if true && __self_vi == __arg_1_vi {
        match (&*self, &*__arg_0) {
            (&NotificationUrgency::Low, &NotificationUrgency::Low) => true,
            (&NotificationUrgency::Normal, &NotificationUrgency::Normal) =>
            true,
            (&NotificationUrgency::Critical, &NotificationUrgency::Critical)
            => true,
            _ => unsafe { ::std::intrinsics::unreachable() }
        }
    } else { false }
})), id: 4421, rules: DefaultBlock, span: Span { lo: BytePos(13824), hi: BytePos(13833), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(13824), hi: BytePos(13833), expn_id: ExpnId(197) } }, ImplItem { id: 4489, ident: ne#0, vis: Inherited, attrs: [Spanned { node: Attribute_ { id: AttrId(1235), style: Outer, value: Spanned { node: MetaWord("inline"), span: Span { lo: BytePos(13824), hi: BytePos(13833), expn_id: ExpnId(4294967295) } }, is_sugared_doc: false }, span: Span { lo: BytePos(13824), hi: BytePos(13833), expn_id: ExpnId(4294967295) } }], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(4492: self), id: 4491 }, Arg { ty: type(&NotificationUrgency), pat: pat(4495: __arg_0), id: 4494 }], output: Return(type(bool)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 4490, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutImmutable, self#0), span: Span { lo: BytePos(13824), hi: BytePos(13833), expn_id: ExpnId(197) } } }, Block { stmts: [], expr: Some(expr(4500: {
    let __self_vi =
        unsafe { ::std::intrinsics::discriminant_value(&*self) } as i32;
    let __arg_1_vi =
        unsafe { ::std::intrinsics::discriminant_value(&*__arg_0) } as i32;
    if true && __self_vi == __arg_1_vi {
        match (&*self, &*__arg_0) {
            (&NotificationUrgency::Low, &NotificationUrgency::Low) => false,
            (&NotificationUrgency::Normal, &NotificationUrgency::Normal) =>
            false,
            (&NotificationUrgency::Critical, &NotificationUrgency::Critical)
            => false,
            _ => unsafe { ::std::intrinsics::unreachable() }
        }
    } else { true }
})), id: 4499, rules: DefaultBlock, span: Span { lo: BytePos(13824), hi: BytePos(13833), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(13824), hi: BytePos(13833), expn_id: ExpnId(197) } }]), vis: Inherited, span: Span { lo: BytePos(13824), hi: BytePos(13833), expn_id: ExpnId(197) } }
Item { ident: NotificationUrgency.::std::cmp::Eq#0, attrs: [Spanned { node: Attribute_ { id: AttrId(1240), style: Outer, value: Spanned { node: MetaWord("automatically_derived"), span: Span { lo: BytePos(13820), hi: BytePos(13822), expn_id: ExpnId(198) } }, is_sugared_doc: false }, span: Span { lo: BytePos(13820), hi: BytePos(13822), expn_id: ExpnId(198) } }, Spanned { node: Attribute_ { id: AttrId(1241), style: Outer, value: Spanned { node: MetaList("allow", [Spanned { node: MetaWord("unused_qualifications"), span: Span { lo: BytePos(13820), hi: BytePos(13822), expn_id: ExpnId(198) } }]), span: Span { lo: BytePos(13820), hi: BytePos(13822), expn_id: ExpnId(198) } }, is_sugared_doc: false }, span: Span { lo: BytePos(13820), hi: BytePos(13822), expn_id: ExpnId(198) } }], id: 4570, node: ItemImpl(Normal, "positive", Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 4599, predicates: [] } }, Some(TraitRef { path: path(::std::cmp::Eq), ref_id: 4598 }), type(NotificationUrgency), [ImplItem { id: 4571, ident: assert_receiver_is_total_eq#0, vis: Inherited, attrs: [Spanned { node: Attribute_ { id: AttrId(1238), style: Outer, value: Spanned { node: MetaWord("inline"), span: Span { lo: BytePos(13820), hi: BytePos(13822), expn_id: ExpnId(4294967295) } }, is_sugared_doc: false }, span: Span { lo: BytePos(13820), hi: BytePos(13822), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(1239), style: Outer, value: Spanned { node: MetaList("doc", [Spanned { node: MetaWord("hidden"), span: Span { lo: BytePos(13820), hi: BytePos(13822), expn_id: ExpnId(4294967295) } }]), span: Span { lo: BytePos(13820), hi: BytePos(13822), expn_id: ExpnId(4294967295) } }, is_sugared_doc: false }, span: Span { lo: BytePos(13820), hi: BytePos(13822), expn_id: ExpnId(4294967295) } }], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(4574: self), id: 4573 }], output: Return(type(())), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 4572, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutImmutable, self#0), span: Span { lo: BytePos(13820), hi: BytePos(13822), expn_id: ExpnId(198) } } }, Block { stmts: [], expr: Some(expr(4578: match (&*self,) {
    (&NotificationUrgency::Low,) => { }
    (&NotificationUrgency::Normal,) => { }
    (&NotificationUrgency::Critical,) => { }
})), id: 4577, rules: DefaultBlock, span: Span { lo: BytePos(13820), hi: BytePos(13822), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(13820), hi: BytePos(13822), expn_id: ExpnId(198) } }]), vis: Inherited, span: Span { lo: BytePos(13820), hi: BytePos(13822), expn_id: ExpnId(198) } }
Item { ident: NotificationUrgency.From<&'a str>#0, attrs: [], id: 4601, node: ItemImpl(Normal, "positive", Generics { lifetimes: [LifetimeDef { lifetime: lifetime(4660: 'a), bounds: [] }], ty_params: [], where_clause: WhereClause { id: 4661, predicates: [] } }, Some(TraitRef { path: path(From<&'a str>), ref_id: 4656 }), type(NotificationUrgency), [ImplItem { id: 4602, ident: from#0, vis: Inherited, attrs: [], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(&'a str), pat: pat(4605: string), id: 4604 }], output: Return(type(NotificationUrgency)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 4603, predicates: [] } }, explicit_self: Spanned { node: SelfStatic, span: Span { lo: BytePos(14208), hi: BytePos(14226), expn_id: ExpnId(4294967295) } } }, Block { stmts: [], expr: Some(expr(4611: match string.to_lowercase().as_ref() {
    "low" => NotificationUrgency::Low,
    "lo" => NotificationUrgency::Low,
    "normal" => NotificationUrgency::Normal,
    "medium" => NotificationUrgency::Normal,
    "critical" => NotificationUrgency::Critical,
    "high" => NotificationUrgency::Critical,
    "hi" => NotificationUrgency::Critical,
    _ => {
        ::std::rt::begin_unwind("not yet implemented",
                                {
                                    static _FILE_LINE: (&'static str, u32) =
                                        ("src/lib.rs", 426u32);
                                    &_FILE_LINE
                                })
    }
})), id: 4610, rules: DefaultBlock, span: Span { lo: BytePos(14247), hi: BytePos(14730), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(14200), hi: BytePos(14730), expn_id: ExpnId(4294967295) } }]), vis: Inherited, span: Span { lo: BytePos(14147), hi: BytePos(14732), expn_id: ExpnId(4294967295) } }
Item { ident: _FILE_LINE#463, attrs: [], id: 4645, node: ItemStatic(type((&'static str, u32)), MutImmutable, expr(4651: ("src/lib.rs", 426u32))), vis: Inherited, span: Span { lo: BytePos(40813), hi: BytePos(40890), expn_id: ExpnId(200) } }
Item { ident: ServerInformation#0, attrs: [Spanned { node: Attribute_ { id: AttrId(240), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Return value of `get_server_information()`.", CookedStr), span: Span { lo: BytePos(14737), hi: BytePos(14784), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(14737), hi: BytePos(14784), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(14737), hi: BytePos(14784), expn_id: ExpnId(4294967295) } }], id: 4663, node: ItemStruct(Struct([Spanned { node: StructField_ { kind: NamedField(name#0, Public), id: 4664, ty: type(String), attrs: [Spanned { node: Attribute_ { id: AttrId(242), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// The product name of the server.", CookedStr), span: Span { lo: BytePos(14837), hi: BytePos(14872), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(14837), hi: BytePos(14872), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(14837), hi: BytePos(14872), expn_id: ExpnId(4294967295) } }] }, span: Span { lo: BytePos(14877), hi: BytePos(14902), expn_id: ExpnId(4294967295) } }, Spanned { node: StructField_ { kind: NamedField(vendor#0, Public), id: 4666, ty: type(String), attrs: [Spanned { node: Attribute_ { id: AttrId(243), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// The vendor name.", CookedStr), span: Span { lo: BytePos(14908), hi: BytePos(14928), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(14908), hi: BytePos(14928), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(14908), hi: BytePos(14928), expn_id: ExpnId(4294967295) } }] }, span: Span { lo: BytePos(14933), hi: BytePos(14958), expn_id: ExpnId(4294967295) } }, Spanned { node: StructField_ { kind: NamedField(version#0, Public), id: 4668, ty: type(String), attrs: [Spanned { node: Attribute_ { id: AttrId(244), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// The server\'s version string.", CookedStr), span: Span { lo: BytePos(14964), hi: BytePos(14996), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(14964), hi: BytePos(14996), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(14964), hi: BytePos(14996), expn_id: ExpnId(4294967295) } }] }, span: Span { lo: BytePos(15001), hi: BytePos(15026), expn_id: ExpnId(4294967295) } }, Spanned { node: StructField_ { kind: NamedField(spec_version#0, Public), id: 4670, ty: type(String), attrs: [Spanned { node: Attribute_ { id: AttrId(245), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// The specification version the server is compliant with.", CookedStr), span: Span { lo: BytePos(15032), hi: BytePos(15091), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(15032), hi: BytePos(15091), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(15032), hi: BytePos(15091), expn_id: ExpnId(4294967295) } }] }, span: Span { lo: BytePos(15096), hi: BytePos(15121), expn_id: ExpnId(4294967295) } }], 4672), Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 4673, predicates: [] } }), vis: Public, span: Span { lo: BytePos(14802), hi: BytePos(15123), expn_id: ExpnId(4294967295) } }
Item { ident: ServerInformation.::std::fmt::Debug#0, attrs: [Spanned { node: Attribute_ { id: AttrId(1243), style: Outer, value: Spanned { node: MetaWord("automatically_derived"), span: Span { lo: BytePos(14794), hi: BytePos(14799), expn_id: ExpnId(204) } }, is_sugared_doc: false }, span: Span { lo: BytePos(14794), hi: BytePos(14799), expn_id: ExpnId(204) } }, Spanned { node: Attribute_ { id: AttrId(1244), style: Outer, value: Spanned { node: MetaList("allow", [Spanned { node: MetaWord("unused_qualifications"), span: Span { lo: BytePos(14794), hi: BytePos(14799), expn_id: ExpnId(204) } }]), span: Span { lo: BytePos(14794), hi: BytePos(14799), expn_id: ExpnId(204) } }, is_sugared_doc: false }, span: Span { lo: BytePos(14794), hi: BytePos(14799), expn_id: ExpnId(204) } }], id: 4674, node: ItemImpl(Normal, "positive", Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 4749, predicates: [] } }, Some(TraitRef { path: path(::std::fmt::Debug), ref_id: 4748 }), type(ServerInformation), [ImplItem { id: 4675, ident: fmt#0, vis: Inherited, attrs: [], node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [Arg { ty: type(_), pat: pat(4678: self), id: 4677 }, Arg { ty: type(&mut ::std::fmt::Formatter), pat: pat(4681: __arg_0), id: 4680 }], output: Return(type(::std::fmt::Result)), variadic: false }, generics: Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 4676, predicates: [] } }, explicit_self: Spanned { node: SelfRegion(None, MutImmutable, self#0), span: Span { lo: BytePos(14794), hi: BytePos(14799), expn_id: ExpnId(204) } } }, Block { stmts: [], expr: Some(expr(4686: match *self {
    ServerInformation {
    name: ref __self_0_0,
    vendor: ref __self_0_1,
    version: ref __self_0_2,
    spec_version: ref __self_0_3 } => {
        let mut builder = __arg_0.debug_struct("ServerInformation");
        let _ = builder.field("name", &&(*__self_0_0));
        let _ = builder.field("vendor", &&(*__self_0_1));
        let _ = builder.field("version", &&(*__self_0_2));
        let _ = builder.field("spec_version", &&(*__self_0_3));
        builder.finish()
    }
})), id: 4685, rules: DefaultBlock, span: Span { lo: BytePos(14794), hi: BytePos(14799), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(14794), hi: BytePos(14799), expn_id: ExpnId(204) } }]), vis: Inherited, span: Span { lo: BytePos(14794), hi: BytePos(14799), expn_id: ExpnId(204) } }
Item { ident: get_capabilities#0, attrs: [Spanned { node: Attribute_ { id: AttrId(246), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Get list of all capabilities of the running notification server.", CookedStr), span: Span { lo: BytePos(15158), hi: BytePos(15226), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(15158), hi: BytePos(15226), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(15158), hi: BytePos(15226), expn_id: ExpnId(4294967295) } }], id: 4751, node: ItemFn(FnDecl { inputs: [], output: Return(type(Result<Vec<String>, Error>)), variadic: false }, Normal, NotConst, Rust, Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 4756, predicates: [] } }, Block { stmts: [stmt(4758: let mut capabilities = <[_]>::into_vec(::std::boxed::Box::new([]));), stmt(4768: let message = build_message("GetCapabilities");), stmt(4774: let connection =
    match Connection::get_private(BusType::Session) {
        ::std::result::Result::Ok(val) => val,
        ::std::result::Result::Err(err) => {
            return ::std::result::Result::Err(::std::convert::From::from(err))
        }
    };), stmt(4794: let reply =
    match connection.send_with_reply_and_block(message, 2000) {
        ::std::result::Result::Ok(val) => val,
        ::std::result::Result::Err(err) => {
            return ::std::result::Result::Err(::std::convert::From::from(err))
        }
    };), stmt(4815: if let Some(&MessageItem::Array(ref items, Cow::Borrowed("s"))) =
       reply.get_items().get(0) {
    for item in items.iter() {
        if let &MessageItem::Str(ref cap) = item {
            capabilities.push(cap.clone());
        }
    }
}), stmt(4845: return Ok(capabilities);)], expr: None, id: 4757, rules: DefaultBlock, span: Span { lo: BytePos(15283), hi: BytePos(15820), expn_id: ExpnId(4294967295) } }), vis: Public, span: Span { lo: BytePos(15227), hi: BytePos(15820), expn_id: ExpnId(4294967295) } }
Item { ident: get_server_information#0, attrs: [Spanned { node: Attribute_ { id: AttrId(247), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Returns a struct containing ServerInformation.", CookedStr), span: Span { lo: BytePos(15822), hi: BytePos(15872), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(15822), hi: BytePos(15872), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(15822), hi: BytePos(15872), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(248), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("///", CookedStr), span: Span { lo: BytePos(15873), hi: BytePos(15876), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(15873), hi: BytePos(15876), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(15873), hi: BytePos(15876), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(249), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// This struct contains name, vendor, version and spec_version of the notification server", CookedStr), span: Span { lo: BytePos(15877), hi: BytePos(15967), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(15877), hi: BytePos(15967), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(15877), hi: BytePos(15967), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(250), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// running.", CookedStr), span: Span { lo: BytePos(15968), hi: BytePos(15980), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(15968), hi: BytePos(15980), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(15968), hi: BytePos(15980), expn_id: ExpnId(4294967295) } }], id: 4850, node: ItemFn(FnDecl { inputs: [], output: Return(type(Result<ServerInformation, Error>)), variadic: false }, Normal, NotConst, Rust, Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 4854, predicates: [] } }, Block { stmts: [stmt(4856: let message = build_message("GetServerInformation");), stmt(4862: let connection =
    match Connection::get_private(BusType::Session) {
        ::std::result::Result::Ok(val) => val,
        ::std::result::Result::Err(err) => {
            return ::std::result::Result::Err(::std::convert::From::from(err))
        }
    };), stmt(4882: let reply =
    match connection.send_with_reply_and_block(message, 2000) {
        ::std::result::Result::Ok(val) => val,
        ::std::result::Result::Err(err) => {
            return ::std::result::Result::Err(::std::convert::From::from(err))
        }
    };), stmt(4903: let items = reply.get_items();)], expr: Some(expr(4908: Ok(ServerInformation{name: unwrap_message_string(items.get(0)),
                     vendor: unwrap_message_string(items.get(1)),
                     version: unwrap_message_string(items.get(2)),
                     spec_version: unwrap_message_string(items.get(3)),}))), id: 4855, rules: DefaultBlock, span: Span { lo: BytePos(16049), hi: BytePos(16572), expn_id: ExpnId(4294967295) } }), vis: Public, span: Span { lo: BytePos(15981), hi: BytePos(16572), expn_id: ExpnId(4294967295) } }
Item { ident: stop_server#0, attrs: [Spanned { node: Attribute_ { id: AttrId(251), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Strictly internal.", CookedStr), span: Span { lo: BytePos(16574), hi: BytePos(16596), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(16574), hi: BytePos(16596), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(16574), hi: BytePos(16596), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(252), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// The Notificationserver implemented here exposes a \"Stop\" function.", CookedStr), span: Span { lo: BytePos(16597), hi: BytePos(16667), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(16597), hi: BytePos(16667), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(16597), hi: BytePos(16667), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(253), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// stops the notification server", CookedStr), span: Span { lo: BytePos(16668), hi: BytePos(16701), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(16668), hi: BytePos(16701), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(16668), hi: BytePos(16701), expn_id: ExpnId(4294967295) } }], id: 4931, node: ItemFn(FnDecl { inputs: [], output: DefaultReturn(Span { lo: BytePos(16723), hi: BytePos(16723), expn_id: ExpnId(4294967295) }), variadic: false }, Normal, NotConst, Rust, Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 4932, predicates: [] } }, Block { stmts: [stmt(4934: let message = build_message("Stop");), stmt(4940: let connection = Connection::get_private(BusType::Session).unwrap();), stmt(4947: let _reply = connection.send_with_reply_and_block(message, 2000).unwrap();)], expr: None, id: 4933, rules: DefaultBlock, span: Span { lo: BytePos(16723), hi: BytePos(16926), expn_id: ExpnId(4294967295) } }), vis: Public, span: Span { lo: BytePos(16702), hi: BytePos(16926), expn_id: ExpnId(4294967295) } }
Item { ident: handle_actions#0, attrs: [Spanned { node: Attribute_ { id: AttrId(254), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// Listens for the `ActionInvoked(UInt32, String)` Signal.", CookedStr), span: Span { lo: BytePos(16930), hi: BytePos(16989), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(16930), hi: BytePos(16989), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(16930), hi: BytePos(16989), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(255), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("///", CookedStr), span: Span { lo: BytePos(16990), hi: BytePos(16993), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(16990), hi: BytePos(16993), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(16990), hi: BytePos(16993), expn_id: ExpnId(4294967295) } }, Spanned { node: Attribute_ { id: AttrId(256), style: Outer, value: Spanned { node: MetaNameValue("doc", Spanned { node: LitStr("/// No need to use this, check out `Notification::show_and_wait_for_action(FnOnce(action:&str))`", CookedStr), span: Span { lo: BytePos(16994), hi: BytePos(17090), expn_id: ExpnId(4294967295) } }), span: Span { lo: BytePos(16994), hi: BytePos(17090), expn_id: ExpnId(4294967295) } }, is_sugared_doc: true }, span: Span { lo: BytePos(16994), hi: BytePos(17090), expn_id: ExpnId(4294967295) } }], id: 4955, node: ItemFn(FnDecl { inputs: [Arg { ty: type(u32), pat: pat(4957: id), id: 4956 }, Arg { ty: type(F), pat: pat(4960: func), id: 4959 }], output: DefaultReturn(Span { lo: BytePos(17132), hi: BytePos(17132), expn_id: ExpnId(4294967295) }), variadic: false }, Normal, NotConst, Rust, Generics { lifetimes: [], ty_params: [TyParam { ident: F#0, id: 4962, bounds: [], default: None, span: Span { lo: BytePos(17113), hi: BytePos(17114), expn_id: ExpnId(4294967295) } }], where_clause: WhereClause { id: 4963, predicates: [BoundPredicate(WhereBoundPredicate { span: Span { lo: BytePos(17138), hi: BytePos(17153), expn_id: ExpnId(4294967295) }, bound_lifetimes: [], bounded_ty: type(F), bounds: [TraitTyParamBound(PolyTraitRef { bound_lifetimes: [], trait_ref: TraitRef { path: path(FnOnce(&str)), ref_id: 4965 }, span: Span { lo: BytePos(17141), hi: BytePos(17153), expn_id: ExpnId(4294967295) } }, None)] })] } }, Block { stmts: [stmt(4969: let connection = Connection::get_private(BusType::Session).unwrap();), stmt(4976: wait_for_action_signal(&connection, id, func);)], expr: None, id: 4968, rules: DefaultBlock, span: Span { lo: BytePos(17154), hi: BytePos(17281), expn_id: ExpnId(4294967295) } }), vis: Public, span: Span { lo: BytePos(17091), hi: BytePos(17281), expn_id: ExpnId(4294967295) } }
Item { ident: wait_for_action_signal#0, attrs: [], id: 4983, node: ItemFn(FnDecl { inputs: [Arg { ty: type(&Connection), pat: pat(4985: connection), id: 4984 }, Arg { ty: type(u32), pat: pat(4989: id), id: 4988 }, Arg { ty: type(F), pat: pat(4992: func), id: 4991 }], output: DefaultReturn(Span { lo: BytePos(17449), hi: BytePos(17449), expn_id: ExpnId(4294967295) }), variadic: false }, Normal, NotConst, Rust, Generics { lifetimes: [], ty_params: [TyParam { ident: F#0, id: 4994, bounds: [], default: None, span: Span { lo: BytePos(17403), hi: BytePos(17404), expn_id: ExpnId(4294967295) } }], where_clause: WhereClause { id: 4995, predicates: [BoundPredicate(WhereBoundPredicate { span: Span { lo: BytePos(17455), hi: BytePos(17470), expn_id: ExpnId(4294967295) }, bound_lifetimes: [], bounded_ty: type(F), bounds: [TraitTyParamBound(PolyTraitRef { bound_lifetimes: [], trait_ref: TraitRef { path: path(FnOnce(&str)), ref_id: 4997 }, span: Span { lo: BytePos(17458), hi: BytePos(17470), expn_id: ExpnId(4294967295) } }, None)] })] } }, Block { stmts: [stmt(5001: connection.add_match("interface=\'org.freedesktop.Notifications\',member=\'ActionInvoked\'").unwrap();), stmt(5006: connection.add_match("interface=\'org.freedesktop.Notifications\',member=\'ActionInvoked\'").unwrap();), stmt(5011: connection.add_match("interface=\'org.freedesktop.Notifications\',member=\'NotificationClosed\'").unwrap();)], expr: Some(expr(5016: for item in connection.iter(1000) {
    if let ConnectionItem::Signal(s) = item {
        let (_, protocol, iface, member) = s.headers();
        let items = s.get_items();
        match (&*protocol.unwrap(), &*iface.unwrap(), &*member.unwrap()) {
            ("/org/freedesktop/Notifications",
             "org.freedesktop.Notifications", "ActionInvoked") => {
                if let (&MessageItem::UInt32(nid),
                        &MessageItem::Str(ref _action)) =
                       (&items[0], &items[1]) {
                    if nid == id { func(_action); break ; }
                }
            }
            ("/org/freedesktop/Notifications",
             "org.freedesktop.Notifications", "NotificationClosed") => {
                if let (&MessageItem::UInt32(nid), &MessageItem::UInt32(_)) =
                       (&items[0], &items[1]) {
                    if nid == id { func("__closed"); break ; }
                }
            }
            (_, _, _) => (),
        }
    }
})), id: 5000, rules: DefaultBlock, span: Span { lo: BytePos(17471), hi: BytePos(18845), expn_id: ExpnId(4294967295) } }), vis: Inherited, span: Span { lo: BytePos(17377), hi: BytePos(18845), expn_id: ExpnId(4294967295) } }
Item { ident: exe_name#0, attrs: [], id: 5136, node: ItemFn(FnDecl { inputs: [], output: Return(type(String)), variadic: false }, Normal, NotConst, Rust, Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 5138, predicates: [] } }, Block { stmts: [], expr: Some(expr(5140: env::current_exe().unwrap().file_name().unwrap().to_str().unwrap().to_owned())), id: 5139, rules: DefaultBlock, span: Span { lo: BytePos(18964), hi: BytePos(19054), expn_id: ExpnId(4294967295) } }), vis: Inherited, span: Span { lo: BytePos(18940), hi: BytePos(19054), expn_id: ExpnId(4294967295) } }
Item { ident: build_message#0, attrs: [], id: 5148, node: ItemFn(FnDecl { inputs: [Arg { ty: type(&str), pat: pat(5150: method_name), id: 5149 }], output: Return(type(Message)), variadic: false }, Normal, NotConst, Rust, Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 5154, predicates: [] } }, Block { stmts: [], expr: Some(expr(5156: Message::new_method_call("org.freedesktop.Notifications",
                         "/org/freedesktop/Notifications",
                         "org.freedesktop.Notifications",
                         method_name).ok().expect(&::std::fmt::format(::std::fmt::Arguments::new_v1({
                                                                                                        static __STATIC_FMTSTR:
                                                                                                               &'static [&'static str]
                                                                                                               =
                                                                                                            &["Error building message call ",
                                                                                                              "."];
                                                                                                        __STATIC_FMTSTR
                                                                                                    },
                                                                                                    &match (&method_name,)
                                                                                                         {
                                                                                                         (__arg0,)
                                                                                                         =>
                                                                                                         [::std::fmt::ArgumentV1::new(__arg0,
                                                                                                                                      ::std::fmt::Debug::fmt)],
                                                                                                     }))))), id: 5155, rules: DefaultBlock, span: Span { lo: BytePos(19102), hi: BytePos(19352), expn_id: ExpnId(4294967295) } }), vis: Inherited, span: Span { lo: BytePos(19056), hi: BytePos(19352), expn_id: ExpnId(4294967295) } }
Item { ident: __STATIC_FMTSTR#526, attrs: [], id: 5172, node: ItemStatic(type(&'static [&'static str]), MutImmutable, expr(5179: &["Error building message call ", "."])), vis: Inherited, span: Span { lo: BytePos(19300), hi: BytePos(19335), expn_id: ExpnId(215) } }
Item { ident: unwrap_message_string#0, attrs: [], id: 5196, node: ItemFn(FnDecl { inputs: [Arg { ty: type(Option<&MessageItem>), pat: pat(5198: item), id: 5197 }], output: Return(type(String)), variadic: false }, Normal, NotConst, Rust, Generics { lifetimes: [], ty_params: [], where_clause: WhereClause { id: 5203, predicates: [] } }, Block { stmts: [], expr: Some(expr(5205: match item {
    Some(&MessageItem::Str(ref value)) => value.to_owned(),
    _ => "".to_owned(),
})), id: 5204, rules: DefaultBlock, span: Span { lo: BytePos(19417), hi: BytePos(19533), expn_id: ExpnId(4294967295) } }), vis: Inherited, span: Span { lo: BytePos(19354), hi: BytePos(19533), expn_id: ExpnId(4294967295) } }