Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/rust/syn/gen/hash.rs
38313 views
1
// SPDX-License-Identifier: Apache-2.0 OR MIT
2
3
// This file is @generated by syn-internal-codegen.
4
// It is not intended for manual editing.
5
6
#[cfg(any(feature = "derive", feature = "full"))]
7
use crate::tt::TokenStreamHelper;
8
use std::hash::{Hash, Hasher};
9
#[cfg(any(feature = "derive", feature = "full"))]
10
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
11
impl Hash for crate::Abi {
12
fn hash<H>(&self, state: &mut H)
13
where
14
H: Hasher,
15
{
16
self.name.hash(state);
17
}
18
}
19
#[cfg(any(feature = "derive", feature = "full"))]
20
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
21
impl Hash for crate::AngleBracketedGenericArguments {
22
fn hash<H>(&self, state: &mut H)
23
where
24
H: Hasher,
25
{
26
self.colon2_token.hash(state);
27
self.args.hash(state);
28
}
29
}
30
#[cfg(feature = "full")]
31
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
32
impl Hash for crate::Arm {
33
fn hash<H>(&self, state: &mut H)
34
where
35
H: Hasher,
36
{
37
self.attrs.hash(state);
38
self.pat.hash(state);
39
self.guard.hash(state);
40
self.body.hash(state);
41
self.comma.hash(state);
42
}
43
}
44
#[cfg(any(feature = "derive", feature = "full"))]
45
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
46
impl Hash for crate::AssocConst {
47
fn hash<H>(&self, state: &mut H)
48
where
49
H: Hasher,
50
{
51
self.ident.hash(state);
52
self.generics.hash(state);
53
self.value.hash(state);
54
}
55
}
56
#[cfg(any(feature = "derive", feature = "full"))]
57
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
58
impl Hash for crate::AssocType {
59
fn hash<H>(&self, state: &mut H)
60
where
61
H: Hasher,
62
{
63
self.ident.hash(state);
64
self.generics.hash(state);
65
self.ty.hash(state);
66
}
67
}
68
#[cfg(any(feature = "derive", feature = "full"))]
69
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
70
impl Hash for crate::AttrStyle {
71
fn hash<H>(&self, state: &mut H)
72
where
73
H: Hasher,
74
{
75
match self {
76
crate::AttrStyle::Outer => {
77
state.write_u8(0u8);
78
}
79
crate::AttrStyle::Inner(_) => {
80
state.write_u8(1u8);
81
}
82
}
83
}
84
}
85
#[cfg(any(feature = "derive", feature = "full"))]
86
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
87
impl Hash for crate::Attribute {
88
fn hash<H>(&self, state: &mut H)
89
where
90
H: Hasher,
91
{
92
self.style.hash(state);
93
self.meta.hash(state);
94
}
95
}
96
#[cfg(any(feature = "derive", feature = "full"))]
97
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
98
impl Hash for crate::BareFnArg {
99
fn hash<H>(&self, state: &mut H)
100
where
101
H: Hasher,
102
{
103
self.attrs.hash(state);
104
self.name.hash(state);
105
self.ty.hash(state);
106
}
107
}
108
#[cfg(any(feature = "derive", feature = "full"))]
109
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
110
impl Hash for crate::BareVariadic {
111
fn hash<H>(&self, state: &mut H)
112
where
113
H: Hasher,
114
{
115
self.attrs.hash(state);
116
self.name.hash(state);
117
self.comma.hash(state);
118
}
119
}
120
#[cfg(any(feature = "derive", feature = "full"))]
121
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
122
impl Hash for crate::BinOp {
123
fn hash<H>(&self, state: &mut H)
124
where
125
H: Hasher,
126
{
127
match self {
128
crate::BinOp::Add(_) => {
129
state.write_u8(0u8);
130
}
131
crate::BinOp::Sub(_) => {
132
state.write_u8(1u8);
133
}
134
crate::BinOp::Mul(_) => {
135
state.write_u8(2u8);
136
}
137
crate::BinOp::Div(_) => {
138
state.write_u8(3u8);
139
}
140
crate::BinOp::Rem(_) => {
141
state.write_u8(4u8);
142
}
143
crate::BinOp::And(_) => {
144
state.write_u8(5u8);
145
}
146
crate::BinOp::Or(_) => {
147
state.write_u8(6u8);
148
}
149
crate::BinOp::BitXor(_) => {
150
state.write_u8(7u8);
151
}
152
crate::BinOp::BitAnd(_) => {
153
state.write_u8(8u8);
154
}
155
crate::BinOp::BitOr(_) => {
156
state.write_u8(9u8);
157
}
158
crate::BinOp::Shl(_) => {
159
state.write_u8(10u8);
160
}
161
crate::BinOp::Shr(_) => {
162
state.write_u8(11u8);
163
}
164
crate::BinOp::Eq(_) => {
165
state.write_u8(12u8);
166
}
167
crate::BinOp::Lt(_) => {
168
state.write_u8(13u8);
169
}
170
crate::BinOp::Le(_) => {
171
state.write_u8(14u8);
172
}
173
crate::BinOp::Ne(_) => {
174
state.write_u8(15u8);
175
}
176
crate::BinOp::Ge(_) => {
177
state.write_u8(16u8);
178
}
179
crate::BinOp::Gt(_) => {
180
state.write_u8(17u8);
181
}
182
crate::BinOp::AddAssign(_) => {
183
state.write_u8(18u8);
184
}
185
crate::BinOp::SubAssign(_) => {
186
state.write_u8(19u8);
187
}
188
crate::BinOp::MulAssign(_) => {
189
state.write_u8(20u8);
190
}
191
crate::BinOp::DivAssign(_) => {
192
state.write_u8(21u8);
193
}
194
crate::BinOp::RemAssign(_) => {
195
state.write_u8(22u8);
196
}
197
crate::BinOp::BitXorAssign(_) => {
198
state.write_u8(23u8);
199
}
200
crate::BinOp::BitAndAssign(_) => {
201
state.write_u8(24u8);
202
}
203
crate::BinOp::BitOrAssign(_) => {
204
state.write_u8(25u8);
205
}
206
crate::BinOp::ShlAssign(_) => {
207
state.write_u8(26u8);
208
}
209
crate::BinOp::ShrAssign(_) => {
210
state.write_u8(27u8);
211
}
212
}
213
}
214
}
215
#[cfg(feature = "full")]
216
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
217
impl Hash for crate::Block {
218
fn hash<H>(&self, state: &mut H)
219
where
220
H: Hasher,
221
{
222
self.stmts.hash(state);
223
}
224
}
225
#[cfg(any(feature = "derive", feature = "full"))]
226
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
227
impl Hash for crate::BoundLifetimes {
228
fn hash<H>(&self, state: &mut H)
229
where
230
H: Hasher,
231
{
232
self.lifetimes.hash(state);
233
}
234
}
235
#[cfg(feature = "full")]
236
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
237
impl Hash for crate::CapturedParam {
238
fn hash<H>(&self, state: &mut H)
239
where
240
H: Hasher,
241
{
242
match self {
243
crate::CapturedParam::Lifetime(v0) => {
244
state.write_u8(0u8);
245
v0.hash(state);
246
}
247
crate::CapturedParam::Ident(v0) => {
248
state.write_u8(1u8);
249
v0.hash(state);
250
}
251
}
252
}
253
}
254
#[cfg(any(feature = "derive", feature = "full"))]
255
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
256
impl Hash for crate::ConstParam {
257
fn hash<H>(&self, state: &mut H)
258
where
259
H: Hasher,
260
{
261
self.attrs.hash(state);
262
self.ident.hash(state);
263
self.ty.hash(state);
264
self.eq_token.hash(state);
265
self.default.hash(state);
266
}
267
}
268
#[cfg(any(feature = "derive", feature = "full"))]
269
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
270
impl Hash for crate::Constraint {
271
fn hash<H>(&self, state: &mut H)
272
where
273
H: Hasher,
274
{
275
self.ident.hash(state);
276
self.generics.hash(state);
277
self.bounds.hash(state);
278
}
279
}
280
#[cfg(feature = "derive")]
281
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
282
impl Hash for crate::Data {
283
fn hash<H>(&self, state: &mut H)
284
where
285
H: Hasher,
286
{
287
match self {
288
crate::Data::Struct(v0) => {
289
state.write_u8(0u8);
290
v0.hash(state);
291
}
292
crate::Data::Enum(v0) => {
293
state.write_u8(1u8);
294
v0.hash(state);
295
}
296
crate::Data::Union(v0) => {
297
state.write_u8(2u8);
298
v0.hash(state);
299
}
300
}
301
}
302
}
303
#[cfg(feature = "derive")]
304
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
305
impl Hash for crate::DataEnum {
306
fn hash<H>(&self, state: &mut H)
307
where
308
H: Hasher,
309
{
310
self.variants.hash(state);
311
}
312
}
313
#[cfg(feature = "derive")]
314
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
315
impl Hash for crate::DataStruct {
316
fn hash<H>(&self, state: &mut H)
317
where
318
H: Hasher,
319
{
320
self.fields.hash(state);
321
self.semi_token.hash(state);
322
}
323
}
324
#[cfg(feature = "derive")]
325
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
326
impl Hash for crate::DataUnion {
327
fn hash<H>(&self, state: &mut H)
328
where
329
H: Hasher,
330
{
331
self.fields.hash(state);
332
}
333
}
334
#[cfg(feature = "derive")]
335
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
336
impl Hash for crate::DeriveInput {
337
fn hash<H>(&self, state: &mut H)
338
where
339
H: Hasher,
340
{
341
self.attrs.hash(state);
342
self.vis.hash(state);
343
self.ident.hash(state);
344
self.generics.hash(state);
345
self.data.hash(state);
346
}
347
}
348
#[cfg(any(feature = "derive", feature = "full"))]
349
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
350
impl Hash for crate::Expr {
351
fn hash<H>(&self, state: &mut H)
352
where
353
H: Hasher,
354
{
355
match self {
356
#[cfg(feature = "full")]
357
crate::Expr::Array(v0) => {
358
state.write_u8(0u8);
359
v0.hash(state);
360
}
361
#[cfg(feature = "full")]
362
crate::Expr::Assign(v0) => {
363
state.write_u8(1u8);
364
v0.hash(state);
365
}
366
#[cfg(feature = "full")]
367
crate::Expr::Async(v0) => {
368
state.write_u8(2u8);
369
v0.hash(state);
370
}
371
#[cfg(feature = "full")]
372
crate::Expr::Await(v0) => {
373
state.write_u8(3u8);
374
v0.hash(state);
375
}
376
crate::Expr::Binary(v0) => {
377
state.write_u8(4u8);
378
v0.hash(state);
379
}
380
#[cfg(feature = "full")]
381
crate::Expr::Block(v0) => {
382
state.write_u8(5u8);
383
v0.hash(state);
384
}
385
#[cfg(feature = "full")]
386
crate::Expr::Break(v0) => {
387
state.write_u8(6u8);
388
v0.hash(state);
389
}
390
crate::Expr::Call(v0) => {
391
state.write_u8(7u8);
392
v0.hash(state);
393
}
394
crate::Expr::Cast(v0) => {
395
state.write_u8(8u8);
396
v0.hash(state);
397
}
398
#[cfg(feature = "full")]
399
crate::Expr::Closure(v0) => {
400
state.write_u8(9u8);
401
v0.hash(state);
402
}
403
#[cfg(feature = "full")]
404
crate::Expr::Const(v0) => {
405
state.write_u8(10u8);
406
v0.hash(state);
407
}
408
#[cfg(feature = "full")]
409
crate::Expr::Continue(v0) => {
410
state.write_u8(11u8);
411
v0.hash(state);
412
}
413
crate::Expr::Field(v0) => {
414
state.write_u8(12u8);
415
v0.hash(state);
416
}
417
#[cfg(feature = "full")]
418
crate::Expr::ForLoop(v0) => {
419
state.write_u8(13u8);
420
v0.hash(state);
421
}
422
crate::Expr::Group(v0) => {
423
state.write_u8(14u8);
424
v0.hash(state);
425
}
426
#[cfg(feature = "full")]
427
crate::Expr::If(v0) => {
428
state.write_u8(15u8);
429
v0.hash(state);
430
}
431
crate::Expr::Index(v0) => {
432
state.write_u8(16u8);
433
v0.hash(state);
434
}
435
#[cfg(feature = "full")]
436
crate::Expr::Infer(v0) => {
437
state.write_u8(17u8);
438
v0.hash(state);
439
}
440
#[cfg(feature = "full")]
441
crate::Expr::Let(v0) => {
442
state.write_u8(18u8);
443
v0.hash(state);
444
}
445
crate::Expr::Lit(v0) => {
446
state.write_u8(19u8);
447
v0.hash(state);
448
}
449
#[cfg(feature = "full")]
450
crate::Expr::Loop(v0) => {
451
state.write_u8(20u8);
452
v0.hash(state);
453
}
454
crate::Expr::Macro(v0) => {
455
state.write_u8(21u8);
456
v0.hash(state);
457
}
458
#[cfg(feature = "full")]
459
crate::Expr::Match(v0) => {
460
state.write_u8(22u8);
461
v0.hash(state);
462
}
463
crate::Expr::MethodCall(v0) => {
464
state.write_u8(23u8);
465
v0.hash(state);
466
}
467
crate::Expr::Paren(v0) => {
468
state.write_u8(24u8);
469
v0.hash(state);
470
}
471
crate::Expr::Path(v0) => {
472
state.write_u8(25u8);
473
v0.hash(state);
474
}
475
#[cfg(feature = "full")]
476
crate::Expr::Range(v0) => {
477
state.write_u8(26u8);
478
v0.hash(state);
479
}
480
#[cfg(feature = "full")]
481
crate::Expr::RawAddr(v0) => {
482
state.write_u8(27u8);
483
v0.hash(state);
484
}
485
crate::Expr::Reference(v0) => {
486
state.write_u8(28u8);
487
v0.hash(state);
488
}
489
#[cfg(feature = "full")]
490
crate::Expr::Repeat(v0) => {
491
state.write_u8(29u8);
492
v0.hash(state);
493
}
494
#[cfg(feature = "full")]
495
crate::Expr::Return(v0) => {
496
state.write_u8(30u8);
497
v0.hash(state);
498
}
499
crate::Expr::Struct(v0) => {
500
state.write_u8(31u8);
501
v0.hash(state);
502
}
503
#[cfg(feature = "full")]
504
crate::Expr::Try(v0) => {
505
state.write_u8(32u8);
506
v0.hash(state);
507
}
508
#[cfg(feature = "full")]
509
crate::Expr::TryBlock(v0) => {
510
state.write_u8(33u8);
511
v0.hash(state);
512
}
513
crate::Expr::Tuple(v0) => {
514
state.write_u8(34u8);
515
v0.hash(state);
516
}
517
crate::Expr::Unary(v0) => {
518
state.write_u8(35u8);
519
v0.hash(state);
520
}
521
#[cfg(feature = "full")]
522
crate::Expr::Unsafe(v0) => {
523
state.write_u8(36u8);
524
v0.hash(state);
525
}
526
crate::Expr::Verbatim(v0) => {
527
state.write_u8(37u8);
528
TokenStreamHelper(v0).hash(state);
529
}
530
#[cfg(feature = "full")]
531
crate::Expr::While(v0) => {
532
state.write_u8(38u8);
533
v0.hash(state);
534
}
535
#[cfg(feature = "full")]
536
crate::Expr::Yield(v0) => {
537
state.write_u8(39u8);
538
v0.hash(state);
539
}
540
#[cfg(not(feature = "full"))]
541
_ => unreachable!(),
542
}
543
}
544
}
545
#[cfg(feature = "full")]
546
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
547
impl Hash for crate::ExprArray {
548
fn hash<H>(&self, state: &mut H)
549
where
550
H: Hasher,
551
{
552
self.attrs.hash(state);
553
self.elems.hash(state);
554
}
555
}
556
#[cfg(feature = "full")]
557
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
558
impl Hash for crate::ExprAssign {
559
fn hash<H>(&self, state: &mut H)
560
where
561
H: Hasher,
562
{
563
self.attrs.hash(state);
564
self.left.hash(state);
565
self.right.hash(state);
566
}
567
}
568
#[cfg(feature = "full")]
569
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
570
impl Hash for crate::ExprAsync {
571
fn hash<H>(&self, state: &mut H)
572
where
573
H: Hasher,
574
{
575
self.attrs.hash(state);
576
self.capture.hash(state);
577
self.block.hash(state);
578
}
579
}
580
#[cfg(feature = "full")]
581
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
582
impl Hash for crate::ExprAwait {
583
fn hash<H>(&self, state: &mut H)
584
where
585
H: Hasher,
586
{
587
self.attrs.hash(state);
588
self.base.hash(state);
589
}
590
}
591
#[cfg(any(feature = "derive", feature = "full"))]
592
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
593
impl Hash for crate::ExprBinary {
594
fn hash<H>(&self, state: &mut H)
595
where
596
H: Hasher,
597
{
598
self.attrs.hash(state);
599
self.left.hash(state);
600
self.op.hash(state);
601
self.right.hash(state);
602
}
603
}
604
#[cfg(feature = "full")]
605
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
606
impl Hash for crate::ExprBlock {
607
fn hash<H>(&self, state: &mut H)
608
where
609
H: Hasher,
610
{
611
self.attrs.hash(state);
612
self.label.hash(state);
613
self.block.hash(state);
614
}
615
}
616
#[cfg(feature = "full")]
617
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
618
impl Hash for crate::ExprBreak {
619
fn hash<H>(&self, state: &mut H)
620
where
621
H: Hasher,
622
{
623
self.attrs.hash(state);
624
self.label.hash(state);
625
self.expr.hash(state);
626
}
627
}
628
#[cfg(any(feature = "derive", feature = "full"))]
629
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
630
impl Hash for crate::ExprCall {
631
fn hash<H>(&self, state: &mut H)
632
where
633
H: Hasher,
634
{
635
self.attrs.hash(state);
636
self.func.hash(state);
637
self.args.hash(state);
638
}
639
}
640
#[cfg(any(feature = "derive", feature = "full"))]
641
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
642
impl Hash for crate::ExprCast {
643
fn hash<H>(&self, state: &mut H)
644
where
645
H: Hasher,
646
{
647
self.attrs.hash(state);
648
self.expr.hash(state);
649
self.ty.hash(state);
650
}
651
}
652
#[cfg(feature = "full")]
653
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
654
impl Hash for crate::ExprClosure {
655
fn hash<H>(&self, state: &mut H)
656
where
657
H: Hasher,
658
{
659
self.attrs.hash(state);
660
self.lifetimes.hash(state);
661
self.constness.hash(state);
662
self.movability.hash(state);
663
self.asyncness.hash(state);
664
self.capture.hash(state);
665
self.inputs.hash(state);
666
self.output.hash(state);
667
self.body.hash(state);
668
}
669
}
670
#[cfg(feature = "full")]
671
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
672
impl Hash for crate::ExprConst {
673
fn hash<H>(&self, state: &mut H)
674
where
675
H: Hasher,
676
{
677
self.attrs.hash(state);
678
self.block.hash(state);
679
}
680
}
681
#[cfg(feature = "full")]
682
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
683
impl Hash for crate::ExprContinue {
684
fn hash<H>(&self, state: &mut H)
685
where
686
H: Hasher,
687
{
688
self.attrs.hash(state);
689
self.label.hash(state);
690
}
691
}
692
#[cfg(any(feature = "derive", feature = "full"))]
693
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
694
impl Hash for crate::ExprField {
695
fn hash<H>(&self, state: &mut H)
696
where
697
H: Hasher,
698
{
699
self.attrs.hash(state);
700
self.base.hash(state);
701
self.member.hash(state);
702
}
703
}
704
#[cfg(feature = "full")]
705
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
706
impl Hash for crate::ExprForLoop {
707
fn hash<H>(&self, state: &mut H)
708
where
709
H: Hasher,
710
{
711
self.attrs.hash(state);
712
self.label.hash(state);
713
self.pat.hash(state);
714
self.expr.hash(state);
715
self.body.hash(state);
716
}
717
}
718
#[cfg(any(feature = "derive", feature = "full"))]
719
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
720
impl Hash for crate::ExprGroup {
721
fn hash<H>(&self, state: &mut H)
722
where
723
H: Hasher,
724
{
725
self.attrs.hash(state);
726
self.expr.hash(state);
727
}
728
}
729
#[cfg(feature = "full")]
730
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
731
impl Hash for crate::ExprIf {
732
fn hash<H>(&self, state: &mut H)
733
where
734
H: Hasher,
735
{
736
self.attrs.hash(state);
737
self.cond.hash(state);
738
self.then_branch.hash(state);
739
self.else_branch.hash(state);
740
}
741
}
742
#[cfg(any(feature = "derive", feature = "full"))]
743
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
744
impl Hash for crate::ExprIndex {
745
fn hash<H>(&self, state: &mut H)
746
where
747
H: Hasher,
748
{
749
self.attrs.hash(state);
750
self.expr.hash(state);
751
self.index.hash(state);
752
}
753
}
754
#[cfg(feature = "full")]
755
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
756
impl Hash for crate::ExprInfer {
757
fn hash<H>(&self, state: &mut H)
758
where
759
H: Hasher,
760
{
761
self.attrs.hash(state);
762
}
763
}
764
#[cfg(feature = "full")]
765
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
766
impl Hash for crate::ExprLet {
767
fn hash<H>(&self, state: &mut H)
768
where
769
H: Hasher,
770
{
771
self.attrs.hash(state);
772
self.pat.hash(state);
773
self.expr.hash(state);
774
}
775
}
776
#[cfg(any(feature = "derive", feature = "full"))]
777
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
778
impl Hash for crate::ExprLit {
779
fn hash<H>(&self, state: &mut H)
780
where
781
H: Hasher,
782
{
783
self.attrs.hash(state);
784
self.lit.hash(state);
785
}
786
}
787
#[cfg(feature = "full")]
788
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
789
impl Hash for crate::ExprLoop {
790
fn hash<H>(&self, state: &mut H)
791
where
792
H: Hasher,
793
{
794
self.attrs.hash(state);
795
self.label.hash(state);
796
self.body.hash(state);
797
}
798
}
799
#[cfg(any(feature = "derive", feature = "full"))]
800
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
801
impl Hash for crate::ExprMacro {
802
fn hash<H>(&self, state: &mut H)
803
where
804
H: Hasher,
805
{
806
self.attrs.hash(state);
807
self.mac.hash(state);
808
}
809
}
810
#[cfg(feature = "full")]
811
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
812
impl Hash for crate::ExprMatch {
813
fn hash<H>(&self, state: &mut H)
814
where
815
H: Hasher,
816
{
817
self.attrs.hash(state);
818
self.expr.hash(state);
819
self.arms.hash(state);
820
}
821
}
822
#[cfg(any(feature = "derive", feature = "full"))]
823
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
824
impl Hash for crate::ExprMethodCall {
825
fn hash<H>(&self, state: &mut H)
826
where
827
H: Hasher,
828
{
829
self.attrs.hash(state);
830
self.receiver.hash(state);
831
self.method.hash(state);
832
self.turbofish.hash(state);
833
self.args.hash(state);
834
}
835
}
836
#[cfg(any(feature = "derive", feature = "full"))]
837
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
838
impl Hash for crate::ExprParen {
839
fn hash<H>(&self, state: &mut H)
840
where
841
H: Hasher,
842
{
843
self.attrs.hash(state);
844
self.expr.hash(state);
845
}
846
}
847
#[cfg(any(feature = "derive", feature = "full"))]
848
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
849
impl Hash for crate::ExprPath {
850
fn hash<H>(&self, state: &mut H)
851
where
852
H: Hasher,
853
{
854
self.attrs.hash(state);
855
self.qself.hash(state);
856
self.path.hash(state);
857
}
858
}
859
#[cfg(feature = "full")]
860
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
861
impl Hash for crate::ExprRange {
862
fn hash<H>(&self, state: &mut H)
863
where
864
H: Hasher,
865
{
866
self.attrs.hash(state);
867
self.start.hash(state);
868
self.limits.hash(state);
869
self.end.hash(state);
870
}
871
}
872
#[cfg(feature = "full")]
873
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
874
impl Hash for crate::ExprRawAddr {
875
fn hash<H>(&self, state: &mut H)
876
where
877
H: Hasher,
878
{
879
self.attrs.hash(state);
880
self.mutability.hash(state);
881
self.expr.hash(state);
882
}
883
}
884
#[cfg(any(feature = "derive", feature = "full"))]
885
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
886
impl Hash for crate::ExprReference {
887
fn hash<H>(&self, state: &mut H)
888
where
889
H: Hasher,
890
{
891
self.attrs.hash(state);
892
self.mutability.hash(state);
893
self.expr.hash(state);
894
}
895
}
896
#[cfg(feature = "full")]
897
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
898
impl Hash for crate::ExprRepeat {
899
fn hash<H>(&self, state: &mut H)
900
where
901
H: Hasher,
902
{
903
self.attrs.hash(state);
904
self.expr.hash(state);
905
self.len.hash(state);
906
}
907
}
908
#[cfg(feature = "full")]
909
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
910
impl Hash for crate::ExprReturn {
911
fn hash<H>(&self, state: &mut H)
912
where
913
H: Hasher,
914
{
915
self.attrs.hash(state);
916
self.expr.hash(state);
917
}
918
}
919
#[cfg(any(feature = "derive", feature = "full"))]
920
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
921
impl Hash for crate::ExprStruct {
922
fn hash<H>(&self, state: &mut H)
923
where
924
H: Hasher,
925
{
926
self.attrs.hash(state);
927
self.qself.hash(state);
928
self.path.hash(state);
929
self.fields.hash(state);
930
self.dot2_token.hash(state);
931
self.rest.hash(state);
932
}
933
}
934
#[cfg(feature = "full")]
935
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
936
impl Hash for crate::ExprTry {
937
fn hash<H>(&self, state: &mut H)
938
where
939
H: Hasher,
940
{
941
self.attrs.hash(state);
942
self.expr.hash(state);
943
}
944
}
945
#[cfg(feature = "full")]
946
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
947
impl Hash for crate::ExprTryBlock {
948
fn hash<H>(&self, state: &mut H)
949
where
950
H: Hasher,
951
{
952
self.attrs.hash(state);
953
self.block.hash(state);
954
}
955
}
956
#[cfg(any(feature = "derive", feature = "full"))]
957
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
958
impl Hash for crate::ExprTuple {
959
fn hash<H>(&self, state: &mut H)
960
where
961
H: Hasher,
962
{
963
self.attrs.hash(state);
964
self.elems.hash(state);
965
}
966
}
967
#[cfg(any(feature = "derive", feature = "full"))]
968
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
969
impl Hash for crate::ExprUnary {
970
fn hash<H>(&self, state: &mut H)
971
where
972
H: Hasher,
973
{
974
self.attrs.hash(state);
975
self.op.hash(state);
976
self.expr.hash(state);
977
}
978
}
979
#[cfg(feature = "full")]
980
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
981
impl Hash for crate::ExprUnsafe {
982
fn hash<H>(&self, state: &mut H)
983
where
984
H: Hasher,
985
{
986
self.attrs.hash(state);
987
self.block.hash(state);
988
}
989
}
990
#[cfg(feature = "full")]
991
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
992
impl Hash for crate::ExprWhile {
993
fn hash<H>(&self, state: &mut H)
994
where
995
H: Hasher,
996
{
997
self.attrs.hash(state);
998
self.label.hash(state);
999
self.cond.hash(state);
1000
self.body.hash(state);
1001
}
1002
}
1003
#[cfg(feature = "full")]
1004
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1005
impl Hash for crate::ExprYield {
1006
fn hash<H>(&self, state: &mut H)
1007
where
1008
H: Hasher,
1009
{
1010
self.attrs.hash(state);
1011
self.expr.hash(state);
1012
}
1013
}
1014
#[cfg(any(feature = "derive", feature = "full"))]
1015
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1016
impl Hash for crate::Field {
1017
fn hash<H>(&self, state: &mut H)
1018
where
1019
H: Hasher,
1020
{
1021
self.attrs.hash(state);
1022
self.vis.hash(state);
1023
self.mutability.hash(state);
1024
self.ident.hash(state);
1025
self.colon_token.hash(state);
1026
self.ty.hash(state);
1027
}
1028
}
1029
#[cfg(any(feature = "derive", feature = "full"))]
1030
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1031
impl Hash for crate::FieldMutability {
1032
fn hash<H>(&self, state: &mut H)
1033
where
1034
H: Hasher,
1035
{
1036
match self {
1037
crate::FieldMutability::None => {
1038
state.write_u8(0u8);
1039
}
1040
}
1041
}
1042
}
1043
#[cfg(feature = "full")]
1044
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1045
impl Hash for crate::FieldPat {
1046
fn hash<H>(&self, state: &mut H)
1047
where
1048
H: Hasher,
1049
{
1050
self.attrs.hash(state);
1051
self.member.hash(state);
1052
self.colon_token.hash(state);
1053
self.pat.hash(state);
1054
}
1055
}
1056
#[cfg(any(feature = "derive", feature = "full"))]
1057
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1058
impl Hash for crate::FieldValue {
1059
fn hash<H>(&self, state: &mut H)
1060
where
1061
H: Hasher,
1062
{
1063
self.attrs.hash(state);
1064
self.member.hash(state);
1065
self.colon_token.hash(state);
1066
self.expr.hash(state);
1067
}
1068
}
1069
#[cfg(any(feature = "derive", feature = "full"))]
1070
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1071
impl Hash for crate::Fields {
1072
fn hash<H>(&self, state: &mut H)
1073
where
1074
H: Hasher,
1075
{
1076
match self {
1077
crate::Fields::Named(v0) => {
1078
state.write_u8(0u8);
1079
v0.hash(state);
1080
}
1081
crate::Fields::Unnamed(v0) => {
1082
state.write_u8(1u8);
1083
v0.hash(state);
1084
}
1085
crate::Fields::Unit => {
1086
state.write_u8(2u8);
1087
}
1088
}
1089
}
1090
}
1091
#[cfg(any(feature = "derive", feature = "full"))]
1092
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1093
impl Hash for crate::FieldsNamed {
1094
fn hash<H>(&self, state: &mut H)
1095
where
1096
H: Hasher,
1097
{
1098
self.named.hash(state);
1099
}
1100
}
1101
#[cfg(any(feature = "derive", feature = "full"))]
1102
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1103
impl Hash for crate::FieldsUnnamed {
1104
fn hash<H>(&self, state: &mut H)
1105
where
1106
H: Hasher,
1107
{
1108
self.unnamed.hash(state);
1109
}
1110
}
1111
#[cfg(feature = "full")]
1112
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1113
impl Hash for crate::File {
1114
fn hash<H>(&self, state: &mut H)
1115
where
1116
H: Hasher,
1117
{
1118
self.shebang.hash(state);
1119
self.attrs.hash(state);
1120
self.items.hash(state);
1121
}
1122
}
1123
#[cfg(feature = "full")]
1124
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1125
impl Hash for crate::FnArg {
1126
fn hash<H>(&self, state: &mut H)
1127
where
1128
H: Hasher,
1129
{
1130
match self {
1131
crate::FnArg::Receiver(v0) => {
1132
state.write_u8(0u8);
1133
v0.hash(state);
1134
}
1135
crate::FnArg::Typed(v0) => {
1136
state.write_u8(1u8);
1137
v0.hash(state);
1138
}
1139
}
1140
}
1141
}
1142
#[cfg(feature = "full")]
1143
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1144
impl Hash for crate::ForeignItem {
1145
fn hash<H>(&self, state: &mut H)
1146
where
1147
H: Hasher,
1148
{
1149
match self {
1150
crate::ForeignItem::Fn(v0) => {
1151
state.write_u8(0u8);
1152
v0.hash(state);
1153
}
1154
crate::ForeignItem::Static(v0) => {
1155
state.write_u8(1u8);
1156
v0.hash(state);
1157
}
1158
crate::ForeignItem::Type(v0) => {
1159
state.write_u8(2u8);
1160
v0.hash(state);
1161
}
1162
crate::ForeignItem::Macro(v0) => {
1163
state.write_u8(3u8);
1164
v0.hash(state);
1165
}
1166
crate::ForeignItem::Verbatim(v0) => {
1167
state.write_u8(4u8);
1168
TokenStreamHelper(v0).hash(state);
1169
}
1170
}
1171
}
1172
}
1173
#[cfg(feature = "full")]
1174
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1175
impl Hash for crate::ForeignItemFn {
1176
fn hash<H>(&self, state: &mut H)
1177
where
1178
H: Hasher,
1179
{
1180
self.attrs.hash(state);
1181
self.vis.hash(state);
1182
self.sig.hash(state);
1183
}
1184
}
1185
#[cfg(feature = "full")]
1186
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1187
impl Hash for crate::ForeignItemMacro {
1188
fn hash<H>(&self, state: &mut H)
1189
where
1190
H: Hasher,
1191
{
1192
self.attrs.hash(state);
1193
self.mac.hash(state);
1194
self.semi_token.hash(state);
1195
}
1196
}
1197
#[cfg(feature = "full")]
1198
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1199
impl Hash for crate::ForeignItemStatic {
1200
fn hash<H>(&self, state: &mut H)
1201
where
1202
H: Hasher,
1203
{
1204
self.attrs.hash(state);
1205
self.vis.hash(state);
1206
self.mutability.hash(state);
1207
self.ident.hash(state);
1208
self.ty.hash(state);
1209
}
1210
}
1211
#[cfg(feature = "full")]
1212
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1213
impl Hash for crate::ForeignItemType {
1214
fn hash<H>(&self, state: &mut H)
1215
where
1216
H: Hasher,
1217
{
1218
self.attrs.hash(state);
1219
self.vis.hash(state);
1220
self.ident.hash(state);
1221
self.generics.hash(state);
1222
}
1223
}
1224
#[cfg(any(feature = "derive", feature = "full"))]
1225
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1226
impl Hash for crate::GenericArgument {
1227
fn hash<H>(&self, state: &mut H)
1228
where
1229
H: Hasher,
1230
{
1231
match self {
1232
crate::GenericArgument::Lifetime(v0) => {
1233
state.write_u8(0u8);
1234
v0.hash(state);
1235
}
1236
crate::GenericArgument::Type(v0) => {
1237
state.write_u8(1u8);
1238
v0.hash(state);
1239
}
1240
crate::GenericArgument::Const(v0) => {
1241
state.write_u8(2u8);
1242
v0.hash(state);
1243
}
1244
crate::GenericArgument::AssocType(v0) => {
1245
state.write_u8(3u8);
1246
v0.hash(state);
1247
}
1248
crate::GenericArgument::AssocConst(v0) => {
1249
state.write_u8(4u8);
1250
v0.hash(state);
1251
}
1252
crate::GenericArgument::Constraint(v0) => {
1253
state.write_u8(5u8);
1254
v0.hash(state);
1255
}
1256
}
1257
}
1258
}
1259
#[cfg(any(feature = "derive", feature = "full"))]
1260
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1261
impl Hash for crate::GenericParam {
1262
fn hash<H>(&self, state: &mut H)
1263
where
1264
H: Hasher,
1265
{
1266
match self {
1267
crate::GenericParam::Lifetime(v0) => {
1268
state.write_u8(0u8);
1269
v0.hash(state);
1270
}
1271
crate::GenericParam::Type(v0) => {
1272
state.write_u8(1u8);
1273
v0.hash(state);
1274
}
1275
crate::GenericParam::Const(v0) => {
1276
state.write_u8(2u8);
1277
v0.hash(state);
1278
}
1279
}
1280
}
1281
}
1282
#[cfg(any(feature = "derive", feature = "full"))]
1283
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1284
impl Hash for crate::Generics {
1285
fn hash<H>(&self, state: &mut H)
1286
where
1287
H: Hasher,
1288
{
1289
self.lt_token.hash(state);
1290
self.params.hash(state);
1291
self.gt_token.hash(state);
1292
self.where_clause.hash(state);
1293
}
1294
}
1295
#[cfg(feature = "full")]
1296
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1297
impl Hash for crate::ImplItem {
1298
fn hash<H>(&self, state: &mut H)
1299
where
1300
H: Hasher,
1301
{
1302
match self {
1303
crate::ImplItem::Const(v0) => {
1304
state.write_u8(0u8);
1305
v0.hash(state);
1306
}
1307
crate::ImplItem::Fn(v0) => {
1308
state.write_u8(1u8);
1309
v0.hash(state);
1310
}
1311
crate::ImplItem::Type(v0) => {
1312
state.write_u8(2u8);
1313
v0.hash(state);
1314
}
1315
crate::ImplItem::Macro(v0) => {
1316
state.write_u8(3u8);
1317
v0.hash(state);
1318
}
1319
crate::ImplItem::Verbatim(v0) => {
1320
state.write_u8(4u8);
1321
TokenStreamHelper(v0).hash(state);
1322
}
1323
}
1324
}
1325
}
1326
#[cfg(feature = "full")]
1327
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1328
impl Hash for crate::ImplItemConst {
1329
fn hash<H>(&self, state: &mut H)
1330
where
1331
H: Hasher,
1332
{
1333
self.attrs.hash(state);
1334
self.vis.hash(state);
1335
self.defaultness.hash(state);
1336
self.ident.hash(state);
1337
self.generics.hash(state);
1338
self.ty.hash(state);
1339
self.expr.hash(state);
1340
}
1341
}
1342
#[cfg(feature = "full")]
1343
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1344
impl Hash for crate::ImplItemFn {
1345
fn hash<H>(&self, state: &mut H)
1346
where
1347
H: Hasher,
1348
{
1349
self.attrs.hash(state);
1350
self.vis.hash(state);
1351
self.defaultness.hash(state);
1352
self.sig.hash(state);
1353
self.block.hash(state);
1354
}
1355
}
1356
#[cfg(feature = "full")]
1357
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1358
impl Hash for crate::ImplItemMacro {
1359
fn hash<H>(&self, state: &mut H)
1360
where
1361
H: Hasher,
1362
{
1363
self.attrs.hash(state);
1364
self.mac.hash(state);
1365
self.semi_token.hash(state);
1366
}
1367
}
1368
#[cfg(feature = "full")]
1369
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1370
impl Hash for crate::ImplItemType {
1371
fn hash<H>(&self, state: &mut H)
1372
where
1373
H: Hasher,
1374
{
1375
self.attrs.hash(state);
1376
self.vis.hash(state);
1377
self.defaultness.hash(state);
1378
self.ident.hash(state);
1379
self.generics.hash(state);
1380
self.ty.hash(state);
1381
}
1382
}
1383
#[cfg(feature = "full")]
1384
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1385
impl Hash for crate::ImplRestriction {
1386
fn hash<H>(&self, _state: &mut H)
1387
where
1388
H: Hasher,
1389
{
1390
match *self {}
1391
}
1392
}
1393
#[cfg(feature = "full")]
1394
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1395
impl Hash for crate::Item {
1396
fn hash<H>(&self, state: &mut H)
1397
where
1398
H: Hasher,
1399
{
1400
match self {
1401
crate::Item::Const(v0) => {
1402
state.write_u8(0u8);
1403
v0.hash(state);
1404
}
1405
crate::Item::Enum(v0) => {
1406
state.write_u8(1u8);
1407
v0.hash(state);
1408
}
1409
crate::Item::ExternCrate(v0) => {
1410
state.write_u8(2u8);
1411
v0.hash(state);
1412
}
1413
crate::Item::Fn(v0) => {
1414
state.write_u8(3u8);
1415
v0.hash(state);
1416
}
1417
crate::Item::ForeignMod(v0) => {
1418
state.write_u8(4u8);
1419
v0.hash(state);
1420
}
1421
crate::Item::Impl(v0) => {
1422
state.write_u8(5u8);
1423
v0.hash(state);
1424
}
1425
crate::Item::Macro(v0) => {
1426
state.write_u8(6u8);
1427
v0.hash(state);
1428
}
1429
crate::Item::Mod(v0) => {
1430
state.write_u8(7u8);
1431
v0.hash(state);
1432
}
1433
crate::Item::Static(v0) => {
1434
state.write_u8(8u8);
1435
v0.hash(state);
1436
}
1437
crate::Item::Struct(v0) => {
1438
state.write_u8(9u8);
1439
v0.hash(state);
1440
}
1441
crate::Item::Trait(v0) => {
1442
state.write_u8(10u8);
1443
v0.hash(state);
1444
}
1445
crate::Item::TraitAlias(v0) => {
1446
state.write_u8(11u8);
1447
v0.hash(state);
1448
}
1449
crate::Item::Type(v0) => {
1450
state.write_u8(12u8);
1451
v0.hash(state);
1452
}
1453
crate::Item::Union(v0) => {
1454
state.write_u8(13u8);
1455
v0.hash(state);
1456
}
1457
crate::Item::Use(v0) => {
1458
state.write_u8(14u8);
1459
v0.hash(state);
1460
}
1461
crate::Item::Verbatim(v0) => {
1462
state.write_u8(15u8);
1463
TokenStreamHelper(v0).hash(state);
1464
}
1465
}
1466
}
1467
}
1468
#[cfg(feature = "full")]
1469
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1470
impl Hash for crate::ItemConst {
1471
fn hash<H>(&self, state: &mut H)
1472
where
1473
H: Hasher,
1474
{
1475
self.attrs.hash(state);
1476
self.vis.hash(state);
1477
self.ident.hash(state);
1478
self.generics.hash(state);
1479
self.ty.hash(state);
1480
self.expr.hash(state);
1481
}
1482
}
1483
#[cfg(feature = "full")]
1484
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1485
impl Hash for crate::ItemEnum {
1486
fn hash<H>(&self, state: &mut H)
1487
where
1488
H: Hasher,
1489
{
1490
self.attrs.hash(state);
1491
self.vis.hash(state);
1492
self.ident.hash(state);
1493
self.generics.hash(state);
1494
self.variants.hash(state);
1495
}
1496
}
1497
#[cfg(feature = "full")]
1498
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1499
impl Hash for crate::ItemExternCrate {
1500
fn hash<H>(&self, state: &mut H)
1501
where
1502
H: Hasher,
1503
{
1504
self.attrs.hash(state);
1505
self.vis.hash(state);
1506
self.ident.hash(state);
1507
self.rename.hash(state);
1508
}
1509
}
1510
#[cfg(feature = "full")]
1511
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1512
impl Hash for crate::ItemFn {
1513
fn hash<H>(&self, state: &mut H)
1514
where
1515
H: Hasher,
1516
{
1517
self.attrs.hash(state);
1518
self.vis.hash(state);
1519
self.sig.hash(state);
1520
self.block.hash(state);
1521
}
1522
}
1523
#[cfg(feature = "full")]
1524
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1525
impl Hash for crate::ItemForeignMod {
1526
fn hash<H>(&self, state: &mut H)
1527
where
1528
H: Hasher,
1529
{
1530
self.attrs.hash(state);
1531
self.unsafety.hash(state);
1532
self.abi.hash(state);
1533
self.items.hash(state);
1534
}
1535
}
1536
#[cfg(feature = "full")]
1537
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1538
impl Hash for crate::ItemImpl {
1539
fn hash<H>(&self, state: &mut H)
1540
where
1541
H: Hasher,
1542
{
1543
self.attrs.hash(state);
1544
self.defaultness.hash(state);
1545
self.unsafety.hash(state);
1546
self.generics.hash(state);
1547
self.trait_.hash(state);
1548
self.self_ty.hash(state);
1549
self.items.hash(state);
1550
}
1551
}
1552
#[cfg(feature = "full")]
1553
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1554
impl Hash for crate::ItemMacro {
1555
fn hash<H>(&self, state: &mut H)
1556
where
1557
H: Hasher,
1558
{
1559
self.attrs.hash(state);
1560
self.ident.hash(state);
1561
self.mac.hash(state);
1562
self.semi_token.hash(state);
1563
}
1564
}
1565
#[cfg(feature = "full")]
1566
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1567
impl Hash for crate::ItemMod {
1568
fn hash<H>(&self, state: &mut H)
1569
where
1570
H: Hasher,
1571
{
1572
self.attrs.hash(state);
1573
self.vis.hash(state);
1574
self.unsafety.hash(state);
1575
self.ident.hash(state);
1576
self.content.hash(state);
1577
self.semi.hash(state);
1578
}
1579
}
1580
#[cfg(feature = "full")]
1581
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1582
impl Hash for crate::ItemStatic {
1583
fn hash<H>(&self, state: &mut H)
1584
where
1585
H: Hasher,
1586
{
1587
self.attrs.hash(state);
1588
self.vis.hash(state);
1589
self.mutability.hash(state);
1590
self.ident.hash(state);
1591
self.ty.hash(state);
1592
self.expr.hash(state);
1593
}
1594
}
1595
#[cfg(feature = "full")]
1596
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1597
impl Hash for crate::ItemStruct {
1598
fn hash<H>(&self, state: &mut H)
1599
where
1600
H: Hasher,
1601
{
1602
self.attrs.hash(state);
1603
self.vis.hash(state);
1604
self.ident.hash(state);
1605
self.generics.hash(state);
1606
self.fields.hash(state);
1607
self.semi_token.hash(state);
1608
}
1609
}
1610
#[cfg(feature = "full")]
1611
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1612
impl Hash for crate::ItemTrait {
1613
fn hash<H>(&self, state: &mut H)
1614
where
1615
H: Hasher,
1616
{
1617
self.attrs.hash(state);
1618
self.vis.hash(state);
1619
self.unsafety.hash(state);
1620
self.auto_token.hash(state);
1621
self.restriction.hash(state);
1622
self.ident.hash(state);
1623
self.generics.hash(state);
1624
self.colon_token.hash(state);
1625
self.supertraits.hash(state);
1626
self.items.hash(state);
1627
}
1628
}
1629
#[cfg(feature = "full")]
1630
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1631
impl Hash for crate::ItemTraitAlias {
1632
fn hash<H>(&self, state: &mut H)
1633
where
1634
H: Hasher,
1635
{
1636
self.attrs.hash(state);
1637
self.vis.hash(state);
1638
self.ident.hash(state);
1639
self.generics.hash(state);
1640
self.bounds.hash(state);
1641
}
1642
}
1643
#[cfg(feature = "full")]
1644
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1645
impl Hash for crate::ItemType {
1646
fn hash<H>(&self, state: &mut H)
1647
where
1648
H: Hasher,
1649
{
1650
self.attrs.hash(state);
1651
self.vis.hash(state);
1652
self.ident.hash(state);
1653
self.generics.hash(state);
1654
self.ty.hash(state);
1655
}
1656
}
1657
#[cfg(feature = "full")]
1658
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1659
impl Hash for crate::ItemUnion {
1660
fn hash<H>(&self, state: &mut H)
1661
where
1662
H: Hasher,
1663
{
1664
self.attrs.hash(state);
1665
self.vis.hash(state);
1666
self.ident.hash(state);
1667
self.generics.hash(state);
1668
self.fields.hash(state);
1669
}
1670
}
1671
#[cfg(feature = "full")]
1672
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1673
impl Hash for crate::ItemUse {
1674
fn hash<H>(&self, state: &mut H)
1675
where
1676
H: Hasher,
1677
{
1678
self.attrs.hash(state);
1679
self.vis.hash(state);
1680
self.leading_colon.hash(state);
1681
self.tree.hash(state);
1682
}
1683
}
1684
#[cfg(feature = "full")]
1685
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1686
impl Hash for crate::Label {
1687
fn hash<H>(&self, state: &mut H)
1688
where
1689
H: Hasher,
1690
{
1691
self.name.hash(state);
1692
}
1693
}
1694
#[cfg(any(feature = "derive", feature = "full"))]
1695
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1696
impl Hash for crate::LifetimeParam {
1697
fn hash<H>(&self, state: &mut H)
1698
where
1699
H: Hasher,
1700
{
1701
self.attrs.hash(state);
1702
self.lifetime.hash(state);
1703
self.colon_token.hash(state);
1704
self.bounds.hash(state);
1705
}
1706
}
1707
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1708
impl Hash for crate::Lit {
1709
fn hash<H>(&self, state: &mut H)
1710
where
1711
H: Hasher,
1712
{
1713
match self {
1714
crate::Lit::Str(v0) => {
1715
state.write_u8(0u8);
1716
v0.hash(state);
1717
}
1718
crate::Lit::ByteStr(v0) => {
1719
state.write_u8(1u8);
1720
v0.hash(state);
1721
}
1722
crate::Lit::CStr(v0) => {
1723
state.write_u8(2u8);
1724
v0.hash(state);
1725
}
1726
crate::Lit::Byte(v0) => {
1727
state.write_u8(3u8);
1728
v0.hash(state);
1729
}
1730
crate::Lit::Char(v0) => {
1731
state.write_u8(4u8);
1732
v0.hash(state);
1733
}
1734
crate::Lit::Int(v0) => {
1735
state.write_u8(5u8);
1736
v0.hash(state);
1737
}
1738
crate::Lit::Float(v0) => {
1739
state.write_u8(6u8);
1740
v0.hash(state);
1741
}
1742
crate::Lit::Bool(v0) => {
1743
state.write_u8(7u8);
1744
v0.hash(state);
1745
}
1746
crate::Lit::Verbatim(v0) => {
1747
state.write_u8(8u8);
1748
v0.to_string().hash(state);
1749
}
1750
}
1751
}
1752
}
1753
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1754
impl Hash for crate::LitBool {
1755
fn hash<H>(&self, state: &mut H)
1756
where
1757
H: Hasher,
1758
{
1759
self.value.hash(state);
1760
}
1761
}
1762
#[cfg(feature = "full")]
1763
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1764
impl Hash for crate::Local {
1765
fn hash<H>(&self, state: &mut H)
1766
where
1767
H: Hasher,
1768
{
1769
self.attrs.hash(state);
1770
self.pat.hash(state);
1771
self.init.hash(state);
1772
}
1773
}
1774
#[cfg(feature = "full")]
1775
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1776
impl Hash for crate::LocalInit {
1777
fn hash<H>(&self, state: &mut H)
1778
where
1779
H: Hasher,
1780
{
1781
self.expr.hash(state);
1782
self.diverge.hash(state);
1783
}
1784
}
1785
#[cfg(any(feature = "derive", feature = "full"))]
1786
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1787
impl Hash for crate::Macro {
1788
fn hash<H>(&self, state: &mut H)
1789
where
1790
H: Hasher,
1791
{
1792
self.path.hash(state);
1793
self.delimiter.hash(state);
1794
TokenStreamHelper(&self.tokens).hash(state);
1795
}
1796
}
1797
#[cfg(any(feature = "derive", feature = "full"))]
1798
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1799
impl Hash for crate::MacroDelimiter {
1800
fn hash<H>(&self, state: &mut H)
1801
where
1802
H: Hasher,
1803
{
1804
match self {
1805
crate::MacroDelimiter::Paren(_) => {
1806
state.write_u8(0u8);
1807
}
1808
crate::MacroDelimiter::Brace(_) => {
1809
state.write_u8(1u8);
1810
}
1811
crate::MacroDelimiter::Bracket(_) => {
1812
state.write_u8(2u8);
1813
}
1814
}
1815
}
1816
}
1817
#[cfg(any(feature = "derive", feature = "full"))]
1818
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1819
impl Hash for crate::Meta {
1820
fn hash<H>(&self, state: &mut H)
1821
where
1822
H: Hasher,
1823
{
1824
match self {
1825
crate::Meta::Path(v0) => {
1826
state.write_u8(0u8);
1827
v0.hash(state);
1828
}
1829
crate::Meta::List(v0) => {
1830
state.write_u8(1u8);
1831
v0.hash(state);
1832
}
1833
crate::Meta::NameValue(v0) => {
1834
state.write_u8(2u8);
1835
v0.hash(state);
1836
}
1837
}
1838
}
1839
}
1840
#[cfg(any(feature = "derive", feature = "full"))]
1841
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1842
impl Hash for crate::MetaList {
1843
fn hash<H>(&self, state: &mut H)
1844
where
1845
H: Hasher,
1846
{
1847
self.path.hash(state);
1848
self.delimiter.hash(state);
1849
TokenStreamHelper(&self.tokens).hash(state);
1850
}
1851
}
1852
#[cfg(any(feature = "derive", feature = "full"))]
1853
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1854
impl Hash for crate::MetaNameValue {
1855
fn hash<H>(&self, state: &mut H)
1856
where
1857
H: Hasher,
1858
{
1859
self.path.hash(state);
1860
self.value.hash(state);
1861
}
1862
}
1863
#[cfg(any(feature = "derive", feature = "full"))]
1864
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1865
impl Hash for crate::ParenthesizedGenericArguments {
1866
fn hash<H>(&self, state: &mut H)
1867
where
1868
H: Hasher,
1869
{
1870
self.inputs.hash(state);
1871
self.output.hash(state);
1872
}
1873
}
1874
#[cfg(feature = "full")]
1875
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1876
impl Hash for crate::Pat {
1877
fn hash<H>(&self, state: &mut H)
1878
where
1879
H: Hasher,
1880
{
1881
match self {
1882
crate::Pat::Const(v0) => {
1883
state.write_u8(0u8);
1884
v0.hash(state);
1885
}
1886
crate::Pat::Ident(v0) => {
1887
state.write_u8(1u8);
1888
v0.hash(state);
1889
}
1890
crate::Pat::Lit(v0) => {
1891
state.write_u8(2u8);
1892
v0.hash(state);
1893
}
1894
crate::Pat::Macro(v0) => {
1895
state.write_u8(3u8);
1896
v0.hash(state);
1897
}
1898
crate::Pat::Or(v0) => {
1899
state.write_u8(4u8);
1900
v0.hash(state);
1901
}
1902
crate::Pat::Paren(v0) => {
1903
state.write_u8(5u8);
1904
v0.hash(state);
1905
}
1906
crate::Pat::Path(v0) => {
1907
state.write_u8(6u8);
1908
v0.hash(state);
1909
}
1910
crate::Pat::Range(v0) => {
1911
state.write_u8(7u8);
1912
v0.hash(state);
1913
}
1914
crate::Pat::Reference(v0) => {
1915
state.write_u8(8u8);
1916
v0.hash(state);
1917
}
1918
crate::Pat::Rest(v0) => {
1919
state.write_u8(9u8);
1920
v0.hash(state);
1921
}
1922
crate::Pat::Slice(v0) => {
1923
state.write_u8(10u8);
1924
v0.hash(state);
1925
}
1926
crate::Pat::Struct(v0) => {
1927
state.write_u8(11u8);
1928
v0.hash(state);
1929
}
1930
crate::Pat::Tuple(v0) => {
1931
state.write_u8(12u8);
1932
v0.hash(state);
1933
}
1934
crate::Pat::TupleStruct(v0) => {
1935
state.write_u8(13u8);
1936
v0.hash(state);
1937
}
1938
crate::Pat::Type(v0) => {
1939
state.write_u8(14u8);
1940
v0.hash(state);
1941
}
1942
crate::Pat::Verbatim(v0) => {
1943
state.write_u8(15u8);
1944
TokenStreamHelper(v0).hash(state);
1945
}
1946
crate::Pat::Wild(v0) => {
1947
state.write_u8(16u8);
1948
v0.hash(state);
1949
}
1950
}
1951
}
1952
}
1953
#[cfg(feature = "full")]
1954
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1955
impl Hash for crate::PatIdent {
1956
fn hash<H>(&self, state: &mut H)
1957
where
1958
H: Hasher,
1959
{
1960
self.attrs.hash(state);
1961
self.by_ref.hash(state);
1962
self.mutability.hash(state);
1963
self.ident.hash(state);
1964
self.subpat.hash(state);
1965
}
1966
}
1967
#[cfg(feature = "full")]
1968
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1969
impl Hash for crate::PatOr {
1970
fn hash<H>(&self, state: &mut H)
1971
where
1972
H: Hasher,
1973
{
1974
self.attrs.hash(state);
1975
self.leading_vert.hash(state);
1976
self.cases.hash(state);
1977
}
1978
}
1979
#[cfg(feature = "full")]
1980
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1981
impl Hash for crate::PatParen {
1982
fn hash<H>(&self, state: &mut H)
1983
where
1984
H: Hasher,
1985
{
1986
self.attrs.hash(state);
1987
self.pat.hash(state);
1988
}
1989
}
1990
#[cfg(feature = "full")]
1991
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
1992
impl Hash for crate::PatReference {
1993
fn hash<H>(&self, state: &mut H)
1994
where
1995
H: Hasher,
1996
{
1997
self.attrs.hash(state);
1998
self.mutability.hash(state);
1999
self.pat.hash(state);
2000
}
2001
}
2002
#[cfg(feature = "full")]
2003
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2004
impl Hash for crate::PatRest {
2005
fn hash<H>(&self, state: &mut H)
2006
where
2007
H: Hasher,
2008
{
2009
self.attrs.hash(state);
2010
}
2011
}
2012
#[cfg(feature = "full")]
2013
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2014
impl Hash for crate::PatSlice {
2015
fn hash<H>(&self, state: &mut H)
2016
where
2017
H: Hasher,
2018
{
2019
self.attrs.hash(state);
2020
self.elems.hash(state);
2021
}
2022
}
2023
#[cfg(feature = "full")]
2024
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2025
impl Hash for crate::PatStruct {
2026
fn hash<H>(&self, state: &mut H)
2027
where
2028
H: Hasher,
2029
{
2030
self.attrs.hash(state);
2031
self.qself.hash(state);
2032
self.path.hash(state);
2033
self.fields.hash(state);
2034
self.rest.hash(state);
2035
}
2036
}
2037
#[cfg(feature = "full")]
2038
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2039
impl Hash for crate::PatTuple {
2040
fn hash<H>(&self, state: &mut H)
2041
where
2042
H: Hasher,
2043
{
2044
self.attrs.hash(state);
2045
self.elems.hash(state);
2046
}
2047
}
2048
#[cfg(feature = "full")]
2049
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2050
impl Hash for crate::PatTupleStruct {
2051
fn hash<H>(&self, state: &mut H)
2052
where
2053
H: Hasher,
2054
{
2055
self.attrs.hash(state);
2056
self.qself.hash(state);
2057
self.path.hash(state);
2058
self.elems.hash(state);
2059
}
2060
}
2061
#[cfg(feature = "full")]
2062
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2063
impl Hash for crate::PatType {
2064
fn hash<H>(&self, state: &mut H)
2065
where
2066
H: Hasher,
2067
{
2068
self.attrs.hash(state);
2069
self.pat.hash(state);
2070
self.ty.hash(state);
2071
}
2072
}
2073
#[cfg(feature = "full")]
2074
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2075
impl Hash for crate::PatWild {
2076
fn hash<H>(&self, state: &mut H)
2077
where
2078
H: Hasher,
2079
{
2080
self.attrs.hash(state);
2081
}
2082
}
2083
#[cfg(any(feature = "derive", feature = "full"))]
2084
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2085
impl Hash for crate::Path {
2086
fn hash<H>(&self, state: &mut H)
2087
where
2088
H: Hasher,
2089
{
2090
self.leading_colon.hash(state);
2091
self.segments.hash(state);
2092
}
2093
}
2094
#[cfg(any(feature = "derive", feature = "full"))]
2095
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2096
impl Hash for crate::PathArguments {
2097
fn hash<H>(&self, state: &mut H)
2098
where
2099
H: Hasher,
2100
{
2101
match self {
2102
crate::PathArguments::None => {
2103
state.write_u8(0u8);
2104
}
2105
crate::PathArguments::AngleBracketed(v0) => {
2106
state.write_u8(1u8);
2107
v0.hash(state);
2108
}
2109
crate::PathArguments::Parenthesized(v0) => {
2110
state.write_u8(2u8);
2111
v0.hash(state);
2112
}
2113
}
2114
}
2115
}
2116
#[cfg(any(feature = "derive", feature = "full"))]
2117
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2118
impl Hash for crate::PathSegment {
2119
fn hash<H>(&self, state: &mut H)
2120
where
2121
H: Hasher,
2122
{
2123
self.ident.hash(state);
2124
self.arguments.hash(state);
2125
}
2126
}
2127
#[cfg(feature = "full")]
2128
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2129
impl Hash for crate::PointerMutability {
2130
fn hash<H>(&self, state: &mut H)
2131
where
2132
H: Hasher,
2133
{
2134
match self {
2135
crate::PointerMutability::Const(_) => {
2136
state.write_u8(0u8);
2137
}
2138
crate::PointerMutability::Mut(_) => {
2139
state.write_u8(1u8);
2140
}
2141
}
2142
}
2143
}
2144
#[cfg(feature = "full")]
2145
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2146
impl Hash for crate::PreciseCapture {
2147
fn hash<H>(&self, state: &mut H)
2148
where
2149
H: Hasher,
2150
{
2151
self.params.hash(state);
2152
}
2153
}
2154
#[cfg(any(feature = "derive", feature = "full"))]
2155
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2156
impl Hash for crate::PredicateLifetime {
2157
fn hash<H>(&self, state: &mut H)
2158
where
2159
H: Hasher,
2160
{
2161
self.lifetime.hash(state);
2162
self.bounds.hash(state);
2163
}
2164
}
2165
#[cfg(any(feature = "derive", feature = "full"))]
2166
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2167
impl Hash for crate::PredicateType {
2168
fn hash<H>(&self, state: &mut H)
2169
where
2170
H: Hasher,
2171
{
2172
self.lifetimes.hash(state);
2173
self.bounded_ty.hash(state);
2174
self.bounds.hash(state);
2175
}
2176
}
2177
#[cfg(any(feature = "derive", feature = "full"))]
2178
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2179
impl Hash for crate::QSelf {
2180
fn hash<H>(&self, state: &mut H)
2181
where
2182
H: Hasher,
2183
{
2184
self.ty.hash(state);
2185
self.position.hash(state);
2186
self.as_token.hash(state);
2187
}
2188
}
2189
#[cfg(feature = "full")]
2190
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2191
impl Hash for crate::RangeLimits {
2192
fn hash<H>(&self, state: &mut H)
2193
where
2194
H: Hasher,
2195
{
2196
match self {
2197
crate::RangeLimits::HalfOpen(_) => {
2198
state.write_u8(0u8);
2199
}
2200
crate::RangeLimits::Closed(_) => {
2201
state.write_u8(1u8);
2202
}
2203
}
2204
}
2205
}
2206
#[cfg(feature = "full")]
2207
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2208
impl Hash for crate::Receiver {
2209
fn hash<H>(&self, state: &mut H)
2210
where
2211
H: Hasher,
2212
{
2213
self.attrs.hash(state);
2214
self.reference.hash(state);
2215
self.mutability.hash(state);
2216
self.colon_token.hash(state);
2217
self.ty.hash(state);
2218
}
2219
}
2220
#[cfg(any(feature = "derive", feature = "full"))]
2221
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2222
impl Hash for crate::ReturnType {
2223
fn hash<H>(&self, state: &mut H)
2224
where
2225
H: Hasher,
2226
{
2227
match self {
2228
crate::ReturnType::Default => {
2229
state.write_u8(0u8);
2230
}
2231
crate::ReturnType::Type(_, v1) => {
2232
state.write_u8(1u8);
2233
v1.hash(state);
2234
}
2235
}
2236
}
2237
}
2238
#[cfg(feature = "full")]
2239
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2240
impl Hash for crate::Signature {
2241
fn hash<H>(&self, state: &mut H)
2242
where
2243
H: Hasher,
2244
{
2245
self.constness.hash(state);
2246
self.asyncness.hash(state);
2247
self.unsafety.hash(state);
2248
self.abi.hash(state);
2249
self.ident.hash(state);
2250
self.generics.hash(state);
2251
self.inputs.hash(state);
2252
self.variadic.hash(state);
2253
self.output.hash(state);
2254
}
2255
}
2256
#[cfg(feature = "full")]
2257
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2258
impl Hash for crate::StaticMutability {
2259
fn hash<H>(&self, state: &mut H)
2260
where
2261
H: Hasher,
2262
{
2263
match self {
2264
crate::StaticMutability::Mut(_) => {
2265
state.write_u8(0u8);
2266
}
2267
crate::StaticMutability::None => {
2268
state.write_u8(1u8);
2269
}
2270
}
2271
}
2272
}
2273
#[cfg(feature = "full")]
2274
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2275
impl Hash for crate::Stmt {
2276
fn hash<H>(&self, state: &mut H)
2277
where
2278
H: Hasher,
2279
{
2280
match self {
2281
crate::Stmt::Local(v0) => {
2282
state.write_u8(0u8);
2283
v0.hash(state);
2284
}
2285
crate::Stmt::Item(v0) => {
2286
state.write_u8(1u8);
2287
v0.hash(state);
2288
}
2289
crate::Stmt::Expr(v0, v1) => {
2290
state.write_u8(2u8);
2291
v0.hash(state);
2292
v1.hash(state);
2293
}
2294
crate::Stmt::Macro(v0) => {
2295
state.write_u8(3u8);
2296
v0.hash(state);
2297
}
2298
}
2299
}
2300
}
2301
#[cfg(feature = "full")]
2302
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2303
impl Hash for crate::StmtMacro {
2304
fn hash<H>(&self, state: &mut H)
2305
where
2306
H: Hasher,
2307
{
2308
self.attrs.hash(state);
2309
self.mac.hash(state);
2310
self.semi_token.hash(state);
2311
}
2312
}
2313
#[cfg(any(feature = "derive", feature = "full"))]
2314
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2315
impl Hash for crate::TraitBound {
2316
fn hash<H>(&self, state: &mut H)
2317
where
2318
H: Hasher,
2319
{
2320
self.paren_token.hash(state);
2321
self.modifier.hash(state);
2322
self.lifetimes.hash(state);
2323
self.path.hash(state);
2324
}
2325
}
2326
#[cfg(any(feature = "derive", feature = "full"))]
2327
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2328
impl Hash for crate::TraitBoundModifier {
2329
fn hash<H>(&self, state: &mut H)
2330
where
2331
H: Hasher,
2332
{
2333
match self {
2334
crate::TraitBoundModifier::None => {
2335
state.write_u8(0u8);
2336
}
2337
crate::TraitBoundModifier::Maybe(_) => {
2338
state.write_u8(1u8);
2339
}
2340
}
2341
}
2342
}
2343
#[cfg(feature = "full")]
2344
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2345
impl Hash for crate::TraitItem {
2346
fn hash<H>(&self, state: &mut H)
2347
where
2348
H: Hasher,
2349
{
2350
match self {
2351
crate::TraitItem::Const(v0) => {
2352
state.write_u8(0u8);
2353
v0.hash(state);
2354
}
2355
crate::TraitItem::Fn(v0) => {
2356
state.write_u8(1u8);
2357
v0.hash(state);
2358
}
2359
crate::TraitItem::Type(v0) => {
2360
state.write_u8(2u8);
2361
v0.hash(state);
2362
}
2363
crate::TraitItem::Macro(v0) => {
2364
state.write_u8(3u8);
2365
v0.hash(state);
2366
}
2367
crate::TraitItem::Verbatim(v0) => {
2368
state.write_u8(4u8);
2369
TokenStreamHelper(v0).hash(state);
2370
}
2371
}
2372
}
2373
}
2374
#[cfg(feature = "full")]
2375
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2376
impl Hash for crate::TraitItemConst {
2377
fn hash<H>(&self, state: &mut H)
2378
where
2379
H: Hasher,
2380
{
2381
self.attrs.hash(state);
2382
self.ident.hash(state);
2383
self.generics.hash(state);
2384
self.ty.hash(state);
2385
self.default.hash(state);
2386
}
2387
}
2388
#[cfg(feature = "full")]
2389
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2390
impl Hash for crate::TraitItemFn {
2391
fn hash<H>(&self, state: &mut H)
2392
where
2393
H: Hasher,
2394
{
2395
self.attrs.hash(state);
2396
self.sig.hash(state);
2397
self.default.hash(state);
2398
self.semi_token.hash(state);
2399
}
2400
}
2401
#[cfg(feature = "full")]
2402
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2403
impl Hash for crate::TraitItemMacro {
2404
fn hash<H>(&self, state: &mut H)
2405
where
2406
H: Hasher,
2407
{
2408
self.attrs.hash(state);
2409
self.mac.hash(state);
2410
self.semi_token.hash(state);
2411
}
2412
}
2413
#[cfg(feature = "full")]
2414
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2415
impl Hash for crate::TraitItemType {
2416
fn hash<H>(&self, state: &mut H)
2417
where
2418
H: Hasher,
2419
{
2420
self.attrs.hash(state);
2421
self.ident.hash(state);
2422
self.generics.hash(state);
2423
self.colon_token.hash(state);
2424
self.bounds.hash(state);
2425
self.default.hash(state);
2426
}
2427
}
2428
#[cfg(any(feature = "derive", feature = "full"))]
2429
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2430
impl Hash for crate::Type {
2431
fn hash<H>(&self, state: &mut H)
2432
where
2433
H: Hasher,
2434
{
2435
match self {
2436
crate::Type::Array(v0) => {
2437
state.write_u8(0u8);
2438
v0.hash(state);
2439
}
2440
crate::Type::BareFn(v0) => {
2441
state.write_u8(1u8);
2442
v0.hash(state);
2443
}
2444
crate::Type::Group(v0) => {
2445
state.write_u8(2u8);
2446
v0.hash(state);
2447
}
2448
crate::Type::ImplTrait(v0) => {
2449
state.write_u8(3u8);
2450
v0.hash(state);
2451
}
2452
crate::Type::Infer(v0) => {
2453
state.write_u8(4u8);
2454
v0.hash(state);
2455
}
2456
crate::Type::Macro(v0) => {
2457
state.write_u8(5u8);
2458
v0.hash(state);
2459
}
2460
crate::Type::Never(v0) => {
2461
state.write_u8(6u8);
2462
v0.hash(state);
2463
}
2464
crate::Type::Paren(v0) => {
2465
state.write_u8(7u8);
2466
v0.hash(state);
2467
}
2468
crate::Type::Path(v0) => {
2469
state.write_u8(8u8);
2470
v0.hash(state);
2471
}
2472
crate::Type::Ptr(v0) => {
2473
state.write_u8(9u8);
2474
v0.hash(state);
2475
}
2476
crate::Type::Reference(v0) => {
2477
state.write_u8(10u8);
2478
v0.hash(state);
2479
}
2480
crate::Type::Slice(v0) => {
2481
state.write_u8(11u8);
2482
v0.hash(state);
2483
}
2484
crate::Type::TraitObject(v0) => {
2485
state.write_u8(12u8);
2486
v0.hash(state);
2487
}
2488
crate::Type::Tuple(v0) => {
2489
state.write_u8(13u8);
2490
v0.hash(state);
2491
}
2492
crate::Type::Verbatim(v0) => {
2493
state.write_u8(14u8);
2494
TokenStreamHelper(v0).hash(state);
2495
}
2496
}
2497
}
2498
}
2499
#[cfg(any(feature = "derive", feature = "full"))]
2500
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2501
impl Hash for crate::TypeArray {
2502
fn hash<H>(&self, state: &mut H)
2503
where
2504
H: Hasher,
2505
{
2506
self.elem.hash(state);
2507
self.len.hash(state);
2508
}
2509
}
2510
#[cfg(any(feature = "derive", feature = "full"))]
2511
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2512
impl Hash for crate::TypeBareFn {
2513
fn hash<H>(&self, state: &mut H)
2514
where
2515
H: Hasher,
2516
{
2517
self.lifetimes.hash(state);
2518
self.unsafety.hash(state);
2519
self.abi.hash(state);
2520
self.inputs.hash(state);
2521
self.variadic.hash(state);
2522
self.output.hash(state);
2523
}
2524
}
2525
#[cfg(any(feature = "derive", feature = "full"))]
2526
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2527
impl Hash for crate::TypeGroup {
2528
fn hash<H>(&self, state: &mut H)
2529
where
2530
H: Hasher,
2531
{
2532
self.elem.hash(state);
2533
}
2534
}
2535
#[cfg(any(feature = "derive", feature = "full"))]
2536
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2537
impl Hash for crate::TypeImplTrait {
2538
fn hash<H>(&self, state: &mut H)
2539
where
2540
H: Hasher,
2541
{
2542
self.bounds.hash(state);
2543
}
2544
}
2545
#[cfg(any(feature = "derive", feature = "full"))]
2546
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2547
impl Hash for crate::TypeInfer {
2548
fn hash<H>(&self, _state: &mut H)
2549
where
2550
H: Hasher,
2551
{}
2552
}
2553
#[cfg(any(feature = "derive", feature = "full"))]
2554
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2555
impl Hash for crate::TypeMacro {
2556
fn hash<H>(&self, state: &mut H)
2557
where
2558
H: Hasher,
2559
{
2560
self.mac.hash(state);
2561
}
2562
}
2563
#[cfg(any(feature = "derive", feature = "full"))]
2564
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2565
impl Hash for crate::TypeNever {
2566
fn hash<H>(&self, _state: &mut H)
2567
where
2568
H: Hasher,
2569
{}
2570
}
2571
#[cfg(any(feature = "derive", feature = "full"))]
2572
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2573
impl Hash for crate::TypeParam {
2574
fn hash<H>(&self, state: &mut H)
2575
where
2576
H: Hasher,
2577
{
2578
self.attrs.hash(state);
2579
self.ident.hash(state);
2580
self.colon_token.hash(state);
2581
self.bounds.hash(state);
2582
self.eq_token.hash(state);
2583
self.default.hash(state);
2584
}
2585
}
2586
#[cfg(any(feature = "derive", feature = "full"))]
2587
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2588
impl Hash for crate::TypeParamBound {
2589
fn hash<H>(&self, state: &mut H)
2590
where
2591
H: Hasher,
2592
{
2593
match self {
2594
crate::TypeParamBound::Trait(v0) => {
2595
state.write_u8(0u8);
2596
v0.hash(state);
2597
}
2598
crate::TypeParamBound::Lifetime(v0) => {
2599
state.write_u8(1u8);
2600
v0.hash(state);
2601
}
2602
#[cfg(feature = "full")]
2603
crate::TypeParamBound::PreciseCapture(v0) => {
2604
state.write_u8(2u8);
2605
v0.hash(state);
2606
}
2607
crate::TypeParamBound::Verbatim(v0) => {
2608
state.write_u8(3u8);
2609
TokenStreamHelper(v0).hash(state);
2610
}
2611
#[cfg(not(feature = "full"))]
2612
_ => unreachable!(),
2613
}
2614
}
2615
}
2616
#[cfg(any(feature = "derive", feature = "full"))]
2617
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2618
impl Hash for crate::TypeParen {
2619
fn hash<H>(&self, state: &mut H)
2620
where
2621
H: Hasher,
2622
{
2623
self.elem.hash(state);
2624
}
2625
}
2626
#[cfg(any(feature = "derive", feature = "full"))]
2627
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2628
impl Hash for crate::TypePath {
2629
fn hash<H>(&self, state: &mut H)
2630
where
2631
H: Hasher,
2632
{
2633
self.qself.hash(state);
2634
self.path.hash(state);
2635
}
2636
}
2637
#[cfg(any(feature = "derive", feature = "full"))]
2638
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2639
impl Hash for crate::TypePtr {
2640
fn hash<H>(&self, state: &mut H)
2641
where
2642
H: Hasher,
2643
{
2644
self.const_token.hash(state);
2645
self.mutability.hash(state);
2646
self.elem.hash(state);
2647
}
2648
}
2649
#[cfg(any(feature = "derive", feature = "full"))]
2650
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2651
impl Hash for crate::TypeReference {
2652
fn hash<H>(&self, state: &mut H)
2653
where
2654
H: Hasher,
2655
{
2656
self.lifetime.hash(state);
2657
self.mutability.hash(state);
2658
self.elem.hash(state);
2659
}
2660
}
2661
#[cfg(any(feature = "derive", feature = "full"))]
2662
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2663
impl Hash for crate::TypeSlice {
2664
fn hash<H>(&self, state: &mut H)
2665
where
2666
H: Hasher,
2667
{
2668
self.elem.hash(state);
2669
}
2670
}
2671
#[cfg(any(feature = "derive", feature = "full"))]
2672
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2673
impl Hash for crate::TypeTraitObject {
2674
fn hash<H>(&self, state: &mut H)
2675
where
2676
H: Hasher,
2677
{
2678
self.dyn_token.hash(state);
2679
self.bounds.hash(state);
2680
}
2681
}
2682
#[cfg(any(feature = "derive", feature = "full"))]
2683
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2684
impl Hash for crate::TypeTuple {
2685
fn hash<H>(&self, state: &mut H)
2686
where
2687
H: Hasher,
2688
{
2689
self.elems.hash(state);
2690
}
2691
}
2692
#[cfg(any(feature = "derive", feature = "full"))]
2693
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2694
impl Hash for crate::UnOp {
2695
fn hash<H>(&self, state: &mut H)
2696
where
2697
H: Hasher,
2698
{
2699
match self {
2700
crate::UnOp::Deref(_) => {
2701
state.write_u8(0u8);
2702
}
2703
crate::UnOp::Not(_) => {
2704
state.write_u8(1u8);
2705
}
2706
crate::UnOp::Neg(_) => {
2707
state.write_u8(2u8);
2708
}
2709
}
2710
}
2711
}
2712
#[cfg(feature = "full")]
2713
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2714
impl Hash for crate::UseGlob {
2715
fn hash<H>(&self, _state: &mut H)
2716
where
2717
H: Hasher,
2718
{}
2719
}
2720
#[cfg(feature = "full")]
2721
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2722
impl Hash for crate::UseGroup {
2723
fn hash<H>(&self, state: &mut H)
2724
where
2725
H: Hasher,
2726
{
2727
self.items.hash(state);
2728
}
2729
}
2730
#[cfg(feature = "full")]
2731
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2732
impl Hash for crate::UseName {
2733
fn hash<H>(&self, state: &mut H)
2734
where
2735
H: Hasher,
2736
{
2737
self.ident.hash(state);
2738
}
2739
}
2740
#[cfg(feature = "full")]
2741
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2742
impl Hash for crate::UsePath {
2743
fn hash<H>(&self, state: &mut H)
2744
where
2745
H: Hasher,
2746
{
2747
self.ident.hash(state);
2748
self.tree.hash(state);
2749
}
2750
}
2751
#[cfg(feature = "full")]
2752
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2753
impl Hash for crate::UseRename {
2754
fn hash<H>(&self, state: &mut H)
2755
where
2756
H: Hasher,
2757
{
2758
self.ident.hash(state);
2759
self.rename.hash(state);
2760
}
2761
}
2762
#[cfg(feature = "full")]
2763
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2764
impl Hash for crate::UseTree {
2765
fn hash<H>(&self, state: &mut H)
2766
where
2767
H: Hasher,
2768
{
2769
match self {
2770
crate::UseTree::Path(v0) => {
2771
state.write_u8(0u8);
2772
v0.hash(state);
2773
}
2774
crate::UseTree::Name(v0) => {
2775
state.write_u8(1u8);
2776
v0.hash(state);
2777
}
2778
crate::UseTree::Rename(v0) => {
2779
state.write_u8(2u8);
2780
v0.hash(state);
2781
}
2782
crate::UseTree::Glob(v0) => {
2783
state.write_u8(3u8);
2784
v0.hash(state);
2785
}
2786
crate::UseTree::Group(v0) => {
2787
state.write_u8(4u8);
2788
v0.hash(state);
2789
}
2790
}
2791
}
2792
}
2793
#[cfg(feature = "full")]
2794
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2795
impl Hash for crate::Variadic {
2796
fn hash<H>(&self, state: &mut H)
2797
where
2798
H: Hasher,
2799
{
2800
self.attrs.hash(state);
2801
self.pat.hash(state);
2802
self.comma.hash(state);
2803
}
2804
}
2805
#[cfg(any(feature = "derive", feature = "full"))]
2806
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2807
impl Hash for crate::Variant {
2808
fn hash<H>(&self, state: &mut H)
2809
where
2810
H: Hasher,
2811
{
2812
self.attrs.hash(state);
2813
self.ident.hash(state);
2814
self.fields.hash(state);
2815
self.discriminant.hash(state);
2816
}
2817
}
2818
#[cfg(any(feature = "derive", feature = "full"))]
2819
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2820
impl Hash for crate::VisRestricted {
2821
fn hash<H>(&self, state: &mut H)
2822
where
2823
H: Hasher,
2824
{
2825
self.in_token.hash(state);
2826
self.path.hash(state);
2827
}
2828
}
2829
#[cfg(any(feature = "derive", feature = "full"))]
2830
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2831
impl Hash for crate::Visibility {
2832
fn hash<H>(&self, state: &mut H)
2833
where
2834
H: Hasher,
2835
{
2836
match self {
2837
crate::Visibility::Public(_) => {
2838
state.write_u8(0u8);
2839
}
2840
crate::Visibility::Restricted(v0) => {
2841
state.write_u8(1u8);
2842
v0.hash(state);
2843
}
2844
crate::Visibility::Inherited => {
2845
state.write_u8(2u8);
2846
}
2847
}
2848
}
2849
}
2850
#[cfg(any(feature = "derive", feature = "full"))]
2851
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2852
impl Hash for crate::WhereClause {
2853
fn hash<H>(&self, state: &mut H)
2854
where
2855
H: Hasher,
2856
{
2857
self.predicates.hash(state);
2858
}
2859
}
2860
#[cfg(any(feature = "derive", feature = "full"))]
2861
#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
2862
impl Hash for crate::WherePredicate {
2863
fn hash<H>(&self, state: &mut H)
2864
where
2865
H: Hasher,
2866
{
2867
match self {
2868
crate::WherePredicate::Lifetime(v0) => {
2869
state.write_u8(0u8);
2870
v0.hash(state);
2871
}
2872
crate::WherePredicate::Type(v0) => {
2873
state.write_u8(1u8);
2874
v0.hash(state);
2875
}
2876
}
2877
}
2878
}
2879
2880