File Index
Files and directories
Sign in
FILE

hash.rs

File preview with syntax highlighting.

linux-6.19.14/rust/syn/gen/hash.rs RUST
   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"))]
   7use crate::tt::TokenStreamHelper;
   8use std::hash::{Hash, Hasher};
   9#[cfg(any(feature = "derive", feature = "full"))]
  10#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
  11impl 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")))]
  21impl 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")))]
  32impl 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")))]
  46impl 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")))]
  58impl 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")))]
  70impl 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")))]
  87impl 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")))]
  98impl 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")))]
 110impl 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")))]
 122impl 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")))]
 217impl 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")))]
 227impl 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")))]
 237impl 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")))]
 256impl 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")))]
 270impl 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")))]
 282impl 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")))]
 305impl 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")))]
 315impl 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")))]
 326impl 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")))]
 336impl 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")))]
 350impl 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")))]
 547impl 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")))]
 558impl 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")))]
 570impl 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")))]
 582impl 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")))]
 593impl 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")))]
 606impl 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")))]
 618impl 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")))]
 630impl 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")))]
 642impl 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")))]
 654impl 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")))]
 672impl 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")))]
 683impl 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")))]
 694impl 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")))]
 706impl 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")))]
 720impl 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")))]
 731impl 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")))]
 744impl 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")))]
 756impl 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")))]
 766impl 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")))]
 778impl 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")))]
 789impl 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")))]
 801impl 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")))]
 812impl 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")))]
 824impl 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")))]
 838impl 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")))]
 849impl 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")))]
 861impl 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")))]
 874impl 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")))]
 886impl 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")))]
 898impl 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")))]
 910impl 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")))]
 921impl 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")))]
 936impl 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")))]
 947impl 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")))]
 958impl 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")))]
 969impl 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")))]
 981impl 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")))]
 992impl 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")))]
1005impl 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")))]
1016impl 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")))]
1031impl 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")))]
1045impl 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")))]
1058impl 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")))]
1071impl 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")))]
1093impl 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")))]
1103impl 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")))]
1113impl 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")))]
1125impl 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")))]
1144impl 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")))]
1175impl 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")))]
1187impl 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")))]
1199impl 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")))]
1213impl 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")))]
1226impl 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")))]
1261impl 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")))]
1284impl 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")))]
1297impl 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")))]
1328impl 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")))]
1344impl 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")))]
1358impl 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")))]
1370impl 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")))]
1385impl 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")))]
1395impl 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")))]
1470impl 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")))]
1485impl 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")))]
1499impl 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")))]
1512impl 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")))]
1525impl 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")))]
1538impl 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")))]
1554impl 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")))]
1567impl 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")))]
1582impl 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")))]
1597impl 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")))]
1612impl 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")))]
1631impl 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")))]
1645impl 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")))]
1659impl 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")))]
1673impl 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")))]
1686impl 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")))]
1696impl 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")))]
1708impl 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")))]
1754impl 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")))]
1764impl 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")))]
1776impl 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")))]
1787impl 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")))]
1799impl 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")))]
1819impl 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")))]
1842impl 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")))]
1854impl 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")))]
1865impl 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")))]
1876impl 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")))]
1955impl 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")))]
1969impl 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")))]
1981impl 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")))]
1992impl 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")))]
2004impl 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")))]
2014impl 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")))]
2025impl 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")))]
2039impl 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")))]
2050impl 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")))]
2063impl 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")))]
2075impl 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")))]
2085impl 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")))]
2096impl 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")))]
2118impl 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")))]
2129impl 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")))]
2146impl 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")))]
2156impl 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")))]
2167impl 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")))]
2179impl 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")))]
2191impl 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")))]
2208impl 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")))]
2222impl 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")))]
2240impl 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")))]
2258impl 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")))]
2275impl 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")))]
2303impl 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")))]
2315impl 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")))]
2328impl 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")))]
2345impl 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")))]
2376impl 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")))]
2390impl 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")))]
2403impl 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")))]
2415impl 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")))]
2430impl 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")))]
2501impl 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")))]
2512impl 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")))]
2527impl 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")))]
2537impl 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")))]
2547impl 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")))]
2555impl 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")))]
2565impl 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")))]
2573impl 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")))]
2588impl 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")))]
2618impl 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")))]
2628impl 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")))]
2639impl 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")))]
2651impl 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")))]
2663impl 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")))]
2673impl 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")))]
2684impl 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")))]
2694impl 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")))]
2714impl 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")))]
2722impl 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")))]
2732impl 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")))]
2742impl 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")))]
2753impl 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")))]
2764impl 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")))]
2795impl 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")))]
2807impl 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")))]
2820impl 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")))]
2831impl 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")))]
2852impl 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")))]
2862impl 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}
~/ Read-only file preview.