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