// This file is @generated by syn-internal-codegen. // It is not intended for manual editing. #[cfg(any(feature = "derive", feature = "full"))] use crate::tt::TokenStreamHelper; use crate::*; use std::hash::{Hash, Hasher}; #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for Abi { fn hash(&self, state: &mut H) where H: Hasher, { self.name.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for AngleBracketedGenericArguments { fn hash(&self, state: &mut H) where H: Hasher, { self.colon2_token.hash(state); self.args.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for Arm { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.pat.hash(state); self.guard.hash(state); self.body.hash(state); self.comma.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for AttrStyle { fn hash(&self, state: &mut H) where H: Hasher, { match self { AttrStyle::Outer => { state.write_u8(0u8); } AttrStyle::Inner(_) => { state.write_u8(1u8); } } } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for Attribute { fn hash(&self, state: &mut H) where H: Hasher, { self.style.hash(state); self.path.hash(state); TokenStreamHelper(&self.tokens).hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for BareFnArg { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.name.hash(state); self.ty.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for BinOp { fn hash(&self, state: &mut H) where H: Hasher, { match self { BinOp::Add(_) => { state.write_u8(0u8); } BinOp::Sub(_) => { state.write_u8(1u8); } BinOp::Mul(_) => { state.write_u8(2u8); } BinOp::Div(_) => { state.write_u8(3u8); } BinOp::Rem(_) => { state.write_u8(4u8); } BinOp::And(_) => { state.write_u8(5u8); } BinOp::Or(_) => { state.write_u8(6u8); } BinOp::BitXor(_) => { state.write_u8(7u8); } BinOp::BitAnd(_) => { state.write_u8(8u8); } BinOp::BitOr(_) => { state.write_u8(9u8); } BinOp::Shl(_) => { state.write_u8(10u8); } BinOp::Shr(_) => { state.write_u8(11u8); } BinOp::Eq(_) => { state.write_u8(12u8); } BinOp::Lt(_) => { state.write_u8(13u8); } BinOp::Le(_) => { state.write_u8(14u8); } BinOp::Ne(_) => { state.write_u8(15u8); } BinOp::Ge(_) => { state.write_u8(16u8); } BinOp::Gt(_) => { state.write_u8(17u8); } BinOp::AddEq(_) => { state.write_u8(18u8); } BinOp::SubEq(_) => { state.write_u8(19u8); } BinOp::MulEq(_) => { state.write_u8(20u8); } BinOp::DivEq(_) => { state.write_u8(21u8); } BinOp::RemEq(_) => { state.write_u8(22u8); } BinOp::BitXorEq(_) => { state.write_u8(23u8); } BinOp::BitAndEq(_) => { state.write_u8(24u8); } BinOp::BitOrEq(_) => { state.write_u8(25u8); } BinOp::ShlEq(_) => { state.write_u8(26u8); } BinOp::ShrEq(_) => { state.write_u8(27u8); } } } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for Binding { fn hash(&self, state: &mut H) where H: Hasher, { self.ident.hash(state); self.ty.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for Block { fn hash(&self, state: &mut H) where H: Hasher, { self.stmts.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for BoundLifetimes { fn hash(&self, state: &mut H) where H: Hasher, { self.lifetimes.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ConstParam { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.ident.hash(state); self.ty.hash(state); self.eq_token.hash(state); self.default.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for Constraint { fn hash(&self, state: &mut H) where H: Hasher, { self.ident.hash(state); self.bounds.hash(state); } } #[cfg(feature = "derive")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for Data { fn hash(&self, state: &mut H) where H: Hasher, { match self { Data::Struct(v0) => { state.write_u8(0u8); v0.hash(state); } Data::Enum(v0) => { state.write_u8(1u8); v0.hash(state); } Data::Union(v0) => { state.write_u8(2u8); v0.hash(state); } } } } #[cfg(feature = "derive")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for DataEnum { fn hash(&self, state: &mut H) where H: Hasher, { self.variants.hash(state); } } #[cfg(feature = "derive")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for DataStruct { fn hash(&self, state: &mut H) where H: Hasher, { self.fields.hash(state); self.semi_token.hash(state); } } #[cfg(feature = "derive")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for DataUnion { fn hash(&self, state: &mut H) where H: Hasher, { self.fields.hash(state); } } #[cfg(feature = "derive")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for DeriveInput { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.vis.hash(state); self.ident.hash(state); self.generics.hash(state); self.data.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for Expr { fn hash(&self, state: &mut H) where H: Hasher, { match self { #[cfg(feature = "full")] Expr::Array(v0) => { state.write_u8(0u8); v0.hash(state); } #[cfg(feature = "full")] Expr::Assign(v0) => { state.write_u8(1u8); v0.hash(state); } #[cfg(feature = "full")] Expr::AssignOp(v0) => { state.write_u8(2u8); v0.hash(state); } #[cfg(feature = "full")] Expr::Async(v0) => { state.write_u8(3u8); v0.hash(state); } #[cfg(feature = "full")] Expr::Await(v0) => { state.write_u8(4u8); v0.hash(state); } Expr::Binary(v0) => { state.write_u8(5u8); v0.hash(state); } #[cfg(feature = "full")] Expr::Block(v0) => { state.write_u8(6u8); v0.hash(state); } #[cfg(feature = "full")] Expr::Box(v0) => { state.write_u8(7u8); v0.hash(state); } #[cfg(feature = "full")] Expr::Break(v0) => { state.write_u8(8u8); v0.hash(state); } Expr::Call(v0) => { state.write_u8(9u8); v0.hash(state); } Expr::Cast(v0) => { state.write_u8(10u8); v0.hash(state); } #[cfg(feature = "full")] Expr::Closure(v0) => { state.write_u8(11u8); v0.hash(state); } #[cfg(feature = "full")] Expr::Continue(v0) => { state.write_u8(12u8); v0.hash(state); } Expr::Field(v0) => { state.write_u8(13u8); v0.hash(state); } #[cfg(feature = "full")] Expr::ForLoop(v0) => { state.write_u8(14u8); v0.hash(state); } #[cfg(feature = "full")] Expr::Group(v0) => { state.write_u8(15u8); v0.hash(state); } #[cfg(feature = "full")] Expr::If(v0) => { state.write_u8(16u8); v0.hash(state); } Expr::Index(v0) => { state.write_u8(17u8); v0.hash(state); } #[cfg(feature = "full")] Expr::Let(v0) => { state.write_u8(18u8); v0.hash(state); } Expr::Lit(v0) => { state.write_u8(19u8); v0.hash(state); } #[cfg(feature = "full")] Expr::Loop(v0) => { state.write_u8(20u8); v0.hash(state); } #[cfg(feature = "full")] Expr::Macro(v0) => { state.write_u8(21u8); v0.hash(state); } #[cfg(feature = "full")] Expr::Match(v0) => { state.write_u8(22u8); v0.hash(state); } #[cfg(feature = "full")] Expr::MethodCall(v0) => { state.write_u8(23u8); v0.hash(state); } Expr::Paren(v0) => { state.write_u8(24u8); v0.hash(state); } Expr::Path(v0) => { state.write_u8(25u8); v0.hash(state); } #[cfg(feature = "full")] Expr::Range(v0) => { state.write_u8(26u8); v0.hash(state); } #[cfg(feature = "full")] Expr::Reference(v0) => { state.write_u8(27u8); v0.hash(state); } #[cfg(feature = "full")] Expr::Repeat(v0) => { state.write_u8(28u8); v0.hash(state); } #[cfg(feature = "full")] Expr::Return(v0) => { state.write_u8(29u8); v0.hash(state); } #[cfg(feature = "full")] Expr::Struct(v0) => { state.write_u8(30u8); v0.hash(state); } #[cfg(feature = "full")] Expr::Try(v0) => { state.write_u8(31u8); v0.hash(state); } #[cfg(feature = "full")] Expr::TryBlock(v0) => { state.write_u8(32u8); v0.hash(state); } #[cfg(feature = "full")] Expr::Tuple(v0) => { state.write_u8(33u8); v0.hash(state); } #[cfg(feature = "full")] Expr::Type(v0) => { state.write_u8(34u8); v0.hash(state); } Expr::Unary(v0) => { state.write_u8(35u8); v0.hash(state); } #[cfg(feature = "full")] Expr::Unsafe(v0) => { state.write_u8(36u8); v0.hash(state); } Expr::Verbatim(v0) => { state.write_u8(37u8); TokenStreamHelper(v0).hash(state); } #[cfg(feature = "full")] Expr::While(v0) => { state.write_u8(38u8); v0.hash(state); } #[cfg(feature = "full")] Expr::Yield(v0) => { state.write_u8(39u8); v0.hash(state); } _ => unreachable!(), } } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprArray { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.elems.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprAssign { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.left.hash(state); self.right.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprAssignOp { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.left.hash(state); self.op.hash(state); self.right.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprAsync { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.capture.hash(state); self.block.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprAwait { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.base.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprBinary { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.left.hash(state); self.op.hash(state); self.right.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprBlock { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.label.hash(state); self.block.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprBox { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.expr.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprBreak { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.label.hash(state); self.expr.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprCall { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.func.hash(state); self.args.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprCast { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.expr.hash(state); self.ty.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprClosure { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.asyncness.hash(state); self.movability.hash(state); self.capture.hash(state); self.inputs.hash(state); self.output.hash(state); self.body.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprContinue { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.label.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprField { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.base.hash(state); self.member.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprForLoop { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.label.hash(state); self.pat.hash(state); self.expr.hash(state); self.body.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprGroup { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.expr.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprIf { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.cond.hash(state); self.then_branch.hash(state); self.else_branch.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprIndex { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.expr.hash(state); self.index.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprLet { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.pat.hash(state); self.expr.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprLit { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.lit.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprLoop { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.label.hash(state); self.body.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprMacro { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.mac.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprMatch { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.expr.hash(state); self.arms.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprMethodCall { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.receiver.hash(state); self.method.hash(state); self.turbofish.hash(state); self.args.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprParen { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.expr.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprPath { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.qself.hash(state); self.path.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprRange { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.from.hash(state); self.limits.hash(state); self.to.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprReference { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.mutability.hash(state); self.expr.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprRepeat { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.expr.hash(state); self.len.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprReturn { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.expr.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprStruct { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.path.hash(state); self.fields.hash(state); self.dot2_token.hash(state); self.rest.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprTry { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.expr.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprTryBlock { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.block.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprTuple { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.elems.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprType { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.expr.hash(state); self.ty.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprUnary { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.op.hash(state); self.expr.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprUnsafe { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.block.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprWhile { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.label.hash(state); self.cond.hash(state); self.body.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ExprYield { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.expr.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for Field { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.vis.hash(state); self.ident.hash(state); self.colon_token.hash(state); self.ty.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for FieldPat { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.member.hash(state); self.colon_token.hash(state); self.pat.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for FieldValue { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.member.hash(state); self.colon_token.hash(state); self.expr.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for Fields { fn hash(&self, state: &mut H) where H: Hasher, { match self { Fields::Named(v0) => { state.write_u8(0u8); v0.hash(state); } Fields::Unnamed(v0) => { state.write_u8(1u8); v0.hash(state); } Fields::Unit => { state.write_u8(2u8); } } } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for FieldsNamed { fn hash(&self, state: &mut H) where H: Hasher, { self.named.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for FieldsUnnamed { fn hash(&self, state: &mut H) where H: Hasher, { self.unnamed.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for File { fn hash(&self, state: &mut H) where H: Hasher, { self.shebang.hash(state); self.attrs.hash(state); self.items.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for FnArg { fn hash(&self, state: &mut H) where H: Hasher, { match self { FnArg::Receiver(v0) => { state.write_u8(0u8); v0.hash(state); } FnArg::Typed(v0) => { state.write_u8(1u8); v0.hash(state); } } } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ForeignItem { fn hash(&self, state: &mut H) where H: Hasher, { match self { ForeignItem::Fn(v0) => { state.write_u8(0u8); v0.hash(state); } ForeignItem::Static(v0) => { state.write_u8(1u8); v0.hash(state); } ForeignItem::Type(v0) => { state.write_u8(2u8); v0.hash(state); } ForeignItem::Macro(v0) => { state.write_u8(3u8); v0.hash(state); } ForeignItem::Verbatim(v0) => { state.write_u8(4u8); TokenStreamHelper(v0).hash(state); } _ => unreachable!(), } } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ForeignItemFn { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.vis.hash(state); self.sig.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ForeignItemMacro { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.mac.hash(state); self.semi_token.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ForeignItemStatic { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.vis.hash(state); self.mutability.hash(state); self.ident.hash(state); self.ty.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ForeignItemType { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.vis.hash(state); self.ident.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for GenericArgument { fn hash(&self, state: &mut H) where H: Hasher, { match self { GenericArgument::Lifetime(v0) => { state.write_u8(0u8); v0.hash(state); } GenericArgument::Type(v0) => { state.write_u8(1u8); v0.hash(state); } GenericArgument::Binding(v0) => { state.write_u8(2u8); v0.hash(state); } GenericArgument::Constraint(v0) => { state.write_u8(3u8); v0.hash(state); } GenericArgument::Const(v0) => { state.write_u8(4u8); v0.hash(state); } } } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for GenericMethodArgument { fn hash(&self, state: &mut H) where H: Hasher, { match self { GenericMethodArgument::Type(v0) => { state.write_u8(0u8); v0.hash(state); } GenericMethodArgument::Const(v0) => { state.write_u8(1u8); v0.hash(state); } } } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for GenericParam { fn hash(&self, state: &mut H) where H: Hasher, { match self { GenericParam::Type(v0) => { state.write_u8(0u8); v0.hash(state); } GenericParam::Lifetime(v0) => { state.write_u8(1u8); v0.hash(state); } GenericParam::Const(v0) => { state.write_u8(2u8); v0.hash(state); } } } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for Generics { fn hash(&self, state: &mut H) where H: Hasher, { self.lt_token.hash(state); self.params.hash(state); self.gt_token.hash(state); self.where_clause.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ImplItem { fn hash(&self, state: &mut H) where H: Hasher, { match self { ImplItem::Const(v0) => { state.write_u8(0u8); v0.hash(state); } ImplItem::Method(v0) => { state.write_u8(1u8); v0.hash(state); } ImplItem::Type(v0) => { state.write_u8(2u8); v0.hash(state); } ImplItem::Macro(v0) => { state.write_u8(3u8); v0.hash(state); } ImplItem::Verbatim(v0) => { state.write_u8(4u8); TokenStreamHelper(v0).hash(state); } _ => unreachable!(), } } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ImplItemConst { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.vis.hash(state); self.defaultness.hash(state); self.ident.hash(state); self.ty.hash(state); self.expr.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ImplItemMacro { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.mac.hash(state); self.semi_token.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ImplItemMethod { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.vis.hash(state); self.defaultness.hash(state); self.sig.hash(state); self.block.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ImplItemType { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.vis.hash(state); self.defaultness.hash(state); self.ident.hash(state); self.generics.hash(state); self.ty.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for Item { fn hash(&self, state: &mut H) where H: Hasher, { match self { Item::Const(v0) => { state.write_u8(0u8); v0.hash(state); } Item::Enum(v0) => { state.write_u8(1u8); v0.hash(state); } Item::ExternCrate(v0) => { state.write_u8(2u8); v0.hash(state); } Item::Fn(v0) => { state.write_u8(3u8); v0.hash(state); } Item::ForeignMod(v0) => { state.write_u8(4u8); v0.hash(state); } Item::Impl(v0) => { state.write_u8(5u8); v0.hash(state); } Item::Macro(v0) => { state.write_u8(6u8); v0.hash(state); } Item::Macro2(v0) => { state.write_u8(7u8); v0.hash(state); } Item::Mod(v0) => { state.write_u8(8u8); v0.hash(state); } Item::Static(v0) => { state.write_u8(9u8); v0.hash(state); } Item::Struct(v0) => { state.write_u8(10u8); v0.hash(state); } Item::Trait(v0) => { state.write_u8(11u8); v0.hash(state); } Item::TraitAlias(v0) => { state.write_u8(12u8); v0.hash(state); } Item::Type(v0) => { state.write_u8(13u8); v0.hash(state); } Item::Union(v0) => { state.write_u8(14u8); v0.hash(state); } Item::Use(v0) => { state.write_u8(15u8); v0.hash(state); } Item::Verbatim(v0) => { state.write_u8(16u8); TokenStreamHelper(v0).hash(state); } _ => unreachable!(), } } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ItemConst { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.vis.hash(state); self.ident.hash(state); self.ty.hash(state); self.expr.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ItemEnum { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.vis.hash(state); self.ident.hash(state); self.generics.hash(state); self.variants.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ItemExternCrate { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.vis.hash(state); self.ident.hash(state); self.rename.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ItemFn { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.vis.hash(state); self.sig.hash(state); self.block.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ItemForeignMod { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.abi.hash(state); self.items.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ItemImpl { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.defaultness.hash(state); self.unsafety.hash(state); self.generics.hash(state); self.trait_.hash(state); self.self_ty.hash(state); self.items.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ItemMacro { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.ident.hash(state); self.mac.hash(state); self.semi_token.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ItemMacro2 { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.vis.hash(state); self.ident.hash(state); TokenStreamHelper(&self.rules).hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ItemMod { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.vis.hash(state); self.ident.hash(state); self.content.hash(state); self.semi.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ItemStatic { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.vis.hash(state); self.mutability.hash(state); self.ident.hash(state); self.ty.hash(state); self.expr.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ItemStruct { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.vis.hash(state); self.ident.hash(state); self.generics.hash(state); self.fields.hash(state); self.semi_token.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ItemTrait { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.vis.hash(state); self.unsafety.hash(state); self.auto_token.hash(state); self.ident.hash(state); self.generics.hash(state); self.colon_token.hash(state); self.supertraits.hash(state); self.items.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ItemTraitAlias { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.vis.hash(state); self.ident.hash(state); self.generics.hash(state); self.bounds.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ItemType { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.vis.hash(state); self.ident.hash(state); self.generics.hash(state); self.ty.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ItemUnion { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.vis.hash(state); self.ident.hash(state); self.generics.hash(state); self.fields.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ItemUse { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.vis.hash(state); self.leading_colon.hash(state); self.tree.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for Label { fn hash(&self, state: &mut H) where H: Hasher, { self.name.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for LifetimeDef { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.lifetime.hash(state); self.colon_token.hash(state); self.bounds.hash(state); } } #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for Lit { fn hash(&self, state: &mut H) where H: Hasher, { match self { Lit::Str(v0) => { state.write_u8(0u8); v0.hash(state); } Lit::ByteStr(v0) => { state.write_u8(1u8); v0.hash(state); } Lit::Byte(v0) => { state.write_u8(2u8); v0.hash(state); } Lit::Char(v0) => { state.write_u8(3u8); v0.hash(state); } Lit::Int(v0) => { state.write_u8(4u8); v0.hash(state); } Lit::Float(v0) => { state.write_u8(5u8); v0.hash(state); } Lit::Bool(v0) => { state.write_u8(6u8); v0.hash(state); } Lit::Verbatim(v0) => { state.write_u8(7u8); v0.to_string().hash(state); } } } } #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for LitBool { fn hash(&self, state: &mut H) where H: Hasher, { self.value.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for Local { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.pat.hash(state); self.init.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for Macro { fn hash(&self, state: &mut H) where H: Hasher, { self.path.hash(state); self.delimiter.hash(state); TokenStreamHelper(&self.tokens).hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for MacroDelimiter { fn hash(&self, state: &mut H) where H: Hasher, { match self { MacroDelimiter::Paren(_) => { state.write_u8(0u8); } MacroDelimiter::Brace(_) => { state.write_u8(1u8); } MacroDelimiter::Bracket(_) => { state.write_u8(2u8); } } } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for Meta { fn hash(&self, state: &mut H) where H: Hasher, { match self { Meta::Path(v0) => { state.write_u8(0u8); v0.hash(state); } Meta::List(v0) => { state.write_u8(1u8); v0.hash(state); } Meta::NameValue(v0) => { state.write_u8(2u8); v0.hash(state); } } } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for MetaList { fn hash(&self, state: &mut H) where H: Hasher, { self.path.hash(state); self.nested.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for MetaNameValue { fn hash(&self, state: &mut H) where H: Hasher, { self.path.hash(state); self.lit.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for MethodTurbofish { fn hash(&self, state: &mut H) where H: Hasher, { self.args.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for NestedMeta { fn hash(&self, state: &mut H) where H: Hasher, { match self { NestedMeta::Meta(v0) => { state.write_u8(0u8); v0.hash(state); } NestedMeta::Lit(v0) => { state.write_u8(1u8); v0.hash(state); } } } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ParenthesizedGenericArguments { fn hash(&self, state: &mut H) where H: Hasher, { self.inputs.hash(state); self.output.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for Pat { fn hash(&self, state: &mut H) where H: Hasher, { match self { Pat::Box(v0) => { state.write_u8(0u8); v0.hash(state); } Pat::Ident(v0) => { state.write_u8(1u8); v0.hash(state); } Pat::Lit(v0) => { state.write_u8(2u8); v0.hash(state); } Pat::Macro(v0) => { state.write_u8(3u8); v0.hash(state); } Pat::Or(v0) => { state.write_u8(4u8); v0.hash(state); } Pat::Path(v0) => { state.write_u8(5u8); v0.hash(state); } Pat::Range(v0) => { state.write_u8(6u8); v0.hash(state); } Pat::Reference(v0) => { state.write_u8(7u8); v0.hash(state); } Pat::Rest(v0) => { state.write_u8(8u8); v0.hash(state); } Pat::Slice(v0) => { state.write_u8(9u8); v0.hash(state); } Pat::Struct(v0) => { state.write_u8(10u8); v0.hash(state); } Pat::Tuple(v0) => { state.write_u8(11u8); v0.hash(state); } Pat::TupleStruct(v0) => { state.write_u8(12u8); v0.hash(state); } Pat::Type(v0) => { state.write_u8(13u8); v0.hash(state); } Pat::Verbatim(v0) => { state.write_u8(14u8); TokenStreamHelper(v0).hash(state); } Pat::Wild(v0) => { state.write_u8(15u8); v0.hash(state); } _ => unreachable!(), } } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for PatBox { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.pat.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for PatIdent { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.by_ref.hash(state); self.mutability.hash(state); self.ident.hash(state); self.subpat.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for PatLit { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.expr.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for PatMacro { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.mac.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for PatOr { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.leading_vert.hash(state); self.cases.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for PatPath { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.qself.hash(state); self.path.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for PatRange { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.lo.hash(state); self.limits.hash(state); self.hi.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for PatReference { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.mutability.hash(state); self.pat.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for PatRest { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for PatSlice { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.elems.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for PatStruct { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.path.hash(state); self.fields.hash(state); self.dot2_token.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for PatTuple { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.elems.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for PatTupleStruct { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.path.hash(state); self.pat.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for PatType { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.pat.hash(state); self.ty.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for PatWild { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for Path { fn hash(&self, state: &mut H) where H: Hasher, { self.leading_colon.hash(state); self.segments.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for PathArguments { fn hash(&self, state: &mut H) where H: Hasher, { match self { PathArguments::None => { state.write_u8(0u8); } PathArguments::AngleBracketed(v0) => { state.write_u8(1u8); v0.hash(state); } PathArguments::Parenthesized(v0) => { state.write_u8(2u8); v0.hash(state); } } } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for PathSegment { fn hash(&self, state: &mut H) where H: Hasher, { self.ident.hash(state); self.arguments.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for PredicateEq { fn hash(&self, state: &mut H) where H: Hasher, { self.lhs_ty.hash(state); self.rhs_ty.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for PredicateLifetime { fn hash(&self, state: &mut H) where H: Hasher, { self.lifetime.hash(state); self.bounds.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for PredicateType { fn hash(&self, state: &mut H) where H: Hasher, { self.lifetimes.hash(state); self.bounded_ty.hash(state); self.bounds.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for QSelf { fn hash(&self, state: &mut H) where H: Hasher, { self.ty.hash(state); self.position.hash(state); self.as_token.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for RangeLimits { fn hash(&self, state: &mut H) where H: Hasher, { match self { RangeLimits::HalfOpen(_) => { state.write_u8(0u8); } RangeLimits::Closed(_) => { state.write_u8(1u8); } } } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for Receiver { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.reference.hash(state); self.mutability.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for ReturnType { fn hash(&self, state: &mut H) where H: Hasher, { match self { ReturnType::Default => { state.write_u8(0u8); } ReturnType::Type(_, v1) => { state.write_u8(1u8); v1.hash(state); } } } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for Signature { fn hash(&self, state: &mut H) where H: Hasher, { self.constness.hash(state); self.asyncness.hash(state); self.unsafety.hash(state); self.abi.hash(state); self.ident.hash(state); self.generics.hash(state); self.inputs.hash(state); self.variadic.hash(state); self.output.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for Stmt { fn hash(&self, state: &mut H) where H: Hasher, { match self { Stmt::Local(v0) => { state.write_u8(0u8); v0.hash(state); } Stmt::Item(v0) => { state.write_u8(1u8); v0.hash(state); } Stmt::Expr(v0) => { state.write_u8(2u8); v0.hash(state); } Stmt::Semi(v0, _) => { state.write_u8(3u8); v0.hash(state); } } } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for TraitBound { fn hash(&self, state: &mut H) where H: Hasher, { self.paren_token.hash(state); self.modifier.hash(state); self.lifetimes.hash(state); self.path.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for TraitBoundModifier { fn hash(&self, state: &mut H) where H: Hasher, { match self { TraitBoundModifier::None => { state.write_u8(0u8); } TraitBoundModifier::Maybe(_) => { state.write_u8(1u8); } } } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for TraitItem { fn hash(&self, state: &mut H) where H: Hasher, { match self { TraitItem::Const(v0) => { state.write_u8(0u8); v0.hash(state); } TraitItem::Method(v0) => { state.write_u8(1u8); v0.hash(state); } TraitItem::Type(v0) => { state.write_u8(2u8); v0.hash(state); } TraitItem::Macro(v0) => { state.write_u8(3u8); v0.hash(state); } TraitItem::Verbatim(v0) => { state.write_u8(4u8); TokenStreamHelper(v0).hash(state); } _ => unreachable!(), } } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for TraitItemConst { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.ident.hash(state); self.ty.hash(state); self.default.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for TraitItemMacro { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.mac.hash(state); self.semi_token.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for TraitItemMethod { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.sig.hash(state); self.default.hash(state); self.semi_token.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for TraitItemType { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.ident.hash(state); self.generics.hash(state); self.colon_token.hash(state); self.bounds.hash(state); self.default.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for Type { fn hash(&self, state: &mut H) where H: Hasher, { match self { Type::Array(v0) => { state.write_u8(0u8); v0.hash(state); } Type::BareFn(v0) => { state.write_u8(1u8); v0.hash(state); } Type::Group(v0) => { state.write_u8(2u8); v0.hash(state); } Type::ImplTrait(v0) => { state.write_u8(3u8); v0.hash(state); } Type::Infer(v0) => { state.write_u8(4u8); v0.hash(state); } Type::Macro(v0) => { state.write_u8(5u8); v0.hash(state); } Type::Never(v0) => { state.write_u8(6u8); v0.hash(state); } Type::Paren(v0) => { state.write_u8(7u8); v0.hash(state); } Type::Path(v0) => { state.write_u8(8u8); v0.hash(state); } Type::Ptr(v0) => { state.write_u8(9u8); v0.hash(state); } Type::Reference(v0) => { state.write_u8(10u8); v0.hash(state); } Type::Slice(v0) => { state.write_u8(11u8); v0.hash(state); } Type::TraitObject(v0) => { state.write_u8(12u8); v0.hash(state); } Type::Tuple(v0) => { state.write_u8(13u8); v0.hash(state); } Type::Verbatim(v0) => { state.write_u8(14u8); TokenStreamHelper(v0).hash(state); } _ => unreachable!(), } } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for TypeArray { fn hash(&self, state: &mut H) where H: Hasher, { self.elem.hash(state); self.len.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for TypeBareFn { fn hash(&self, state: &mut H) where H: Hasher, { self.lifetimes.hash(state); self.unsafety.hash(state); self.abi.hash(state); self.inputs.hash(state); self.variadic.hash(state); self.output.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for TypeGroup { fn hash(&self, state: &mut H) where H: Hasher, { self.elem.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for TypeImplTrait { fn hash(&self, state: &mut H) where H: Hasher, { self.bounds.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for TypeInfer { fn hash(&self, _state: &mut H) where H: Hasher, { } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for TypeMacro { fn hash(&self, state: &mut H) where H: Hasher, { self.mac.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for TypeNever { fn hash(&self, _state: &mut H) where H: Hasher, { } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for TypeParam { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.ident.hash(state); self.colon_token.hash(state); self.bounds.hash(state); self.eq_token.hash(state); self.default.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for TypeParamBound { fn hash(&self, state: &mut H) where H: Hasher, { match self { TypeParamBound::Trait(v0) => { state.write_u8(0u8); v0.hash(state); } TypeParamBound::Lifetime(v0) => { state.write_u8(1u8); v0.hash(state); } } } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for TypeParen { fn hash(&self, state: &mut H) where H: Hasher, { self.elem.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for TypePath { fn hash(&self, state: &mut H) where H: Hasher, { self.qself.hash(state); self.path.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for TypePtr { fn hash(&self, state: &mut H) where H: Hasher, { self.const_token.hash(state); self.mutability.hash(state); self.elem.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for TypeReference { fn hash(&self, state: &mut H) where H: Hasher, { self.lifetime.hash(state); self.mutability.hash(state); self.elem.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for TypeSlice { fn hash(&self, state: &mut H) where H: Hasher, { self.elem.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for TypeTraitObject { fn hash(&self, state: &mut H) where H: Hasher, { self.dyn_token.hash(state); self.bounds.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for TypeTuple { fn hash(&self, state: &mut H) where H: Hasher, { self.elems.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for UnOp { fn hash(&self, state: &mut H) where H: Hasher, { match self { UnOp::Deref(_) => { state.write_u8(0u8); } UnOp::Not(_) => { state.write_u8(1u8); } UnOp::Neg(_) => { state.write_u8(2u8); } } } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for UseGlob { fn hash(&self, _state: &mut H) where H: Hasher, { } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for UseGroup { fn hash(&self, state: &mut H) where H: Hasher, { self.items.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for UseName { fn hash(&self, state: &mut H) where H: Hasher, { self.ident.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for UsePath { fn hash(&self, state: &mut H) where H: Hasher, { self.ident.hash(state); self.tree.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for UseRename { fn hash(&self, state: &mut H) where H: Hasher, { self.ident.hash(state); self.rename.hash(state); } } #[cfg(feature = "full")] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for UseTree { fn hash(&self, state: &mut H) where H: Hasher, { match self { UseTree::Path(v0) => { state.write_u8(0u8); v0.hash(state); } UseTree::Name(v0) => { state.write_u8(1u8); v0.hash(state); } UseTree::Rename(v0) => { state.write_u8(2u8); v0.hash(state); } UseTree::Glob(v0) => { state.write_u8(3u8); v0.hash(state); } UseTree::Group(v0) => { state.write_u8(4u8); v0.hash(state); } } } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for Variadic { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for Variant { fn hash(&self, state: &mut H) where H: Hasher, { self.attrs.hash(state); self.ident.hash(state); self.fields.hash(state); self.discriminant.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for VisCrate { fn hash(&self, _state: &mut H) where H: Hasher, { } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for VisPublic { fn hash(&self, _state: &mut H) where H: Hasher, { } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for VisRestricted { fn hash(&self, state: &mut H) where H: Hasher, { self.in_token.hash(state); self.path.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for Visibility { fn hash(&self, state: &mut H) where H: Hasher, { match self { Visibility::Public(v0) => { state.write_u8(0u8); v0.hash(state); } Visibility::Crate(v0) => { state.write_u8(1u8); v0.hash(state); } Visibility::Restricted(v0) => { state.write_u8(2u8); v0.hash(state); } Visibility::Inherited => { state.write_u8(3u8); } } } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for WhereClause { fn hash(&self, state: &mut H) where H: Hasher, { self.predicates.hash(state); } } #[cfg(any(feature = "derive", feature = "full"))] #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))] impl Hash for WherePredicate { fn hash(&self, state: &mut H) where H: Hasher, { match self { WherePredicate::Type(v0) => { state.write_u8(0u8); v0.hash(state); } WherePredicate::Lifetime(v0) => { state.write_u8(1u8); v0.hash(state); } WherePredicate::Eq(v0) => { state.write_u8(2u8); v0.hash(state); } } } }