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