133d722a9Sopenharmony_ciuse crate::syntax::{ 233d722a9Sopenharmony_ci Array, ExternFn, Include, Lifetimes, Ptr, Receiver, Ref, Signature, SliceRef, Ty1, Type, Var, 333d722a9Sopenharmony_ci}; 433d722a9Sopenharmony_ciuse std::hash::{Hash, Hasher}; 533d722a9Sopenharmony_ciuse std::mem; 633d722a9Sopenharmony_ciuse std::ops::{Deref, DerefMut}; 733d722a9Sopenharmony_ci 833d722a9Sopenharmony_ciimpl PartialEq for Include { 933d722a9Sopenharmony_ci fn eq(&self, other: &Self) -> bool { 1033d722a9Sopenharmony_ci let Include { 1133d722a9Sopenharmony_ci cfg: _, 1233d722a9Sopenharmony_ci path, 1333d722a9Sopenharmony_ci kind, 1433d722a9Sopenharmony_ci begin_span: _, 1533d722a9Sopenharmony_ci end_span: _, 1633d722a9Sopenharmony_ci } = self; 1733d722a9Sopenharmony_ci let Include { 1833d722a9Sopenharmony_ci cfg: _, 1933d722a9Sopenharmony_ci path: path2, 2033d722a9Sopenharmony_ci kind: kind2, 2133d722a9Sopenharmony_ci begin_span: _, 2233d722a9Sopenharmony_ci end_span: _, 2333d722a9Sopenharmony_ci } = other; 2433d722a9Sopenharmony_ci path == path2 && kind == kind2 2533d722a9Sopenharmony_ci } 2633d722a9Sopenharmony_ci} 2733d722a9Sopenharmony_ci 2833d722a9Sopenharmony_ciimpl Deref for ExternFn { 2933d722a9Sopenharmony_ci type Target = Signature; 3033d722a9Sopenharmony_ci 3133d722a9Sopenharmony_ci fn deref(&self) -> &Self::Target { 3233d722a9Sopenharmony_ci &self.sig 3333d722a9Sopenharmony_ci } 3433d722a9Sopenharmony_ci} 3533d722a9Sopenharmony_ci 3633d722a9Sopenharmony_ciimpl DerefMut for ExternFn { 3733d722a9Sopenharmony_ci fn deref_mut(&mut self) -> &mut Self::Target { 3833d722a9Sopenharmony_ci &mut self.sig 3933d722a9Sopenharmony_ci } 4033d722a9Sopenharmony_ci} 4133d722a9Sopenharmony_ci 4233d722a9Sopenharmony_ciimpl Hash for Type { 4333d722a9Sopenharmony_ci fn hash<H: Hasher>(&self, state: &mut H) { 4433d722a9Sopenharmony_ci mem::discriminant(self).hash(state); 4533d722a9Sopenharmony_ci match self { 4633d722a9Sopenharmony_ci Type::Ident(t) => t.hash(state), 4733d722a9Sopenharmony_ci Type::RustBox(t) => t.hash(state), 4833d722a9Sopenharmony_ci Type::UniquePtr(t) => t.hash(state), 4933d722a9Sopenharmony_ci Type::SharedPtr(t) => t.hash(state), 5033d722a9Sopenharmony_ci Type::WeakPtr(t) => t.hash(state), 5133d722a9Sopenharmony_ci Type::Ref(t) => t.hash(state), 5233d722a9Sopenharmony_ci Type::Ptr(t) => t.hash(state), 5333d722a9Sopenharmony_ci Type::Str(t) => t.hash(state), 5433d722a9Sopenharmony_ci Type::RustVec(t) => t.hash(state), 5533d722a9Sopenharmony_ci Type::CxxVector(t) => t.hash(state), 5633d722a9Sopenharmony_ci Type::Fn(t) => t.hash(state), 5733d722a9Sopenharmony_ci Type::SliceRef(t) => t.hash(state), 5833d722a9Sopenharmony_ci Type::Array(t) => t.hash(state), 5933d722a9Sopenharmony_ci Type::Void(_) => {} 6033d722a9Sopenharmony_ci } 6133d722a9Sopenharmony_ci } 6233d722a9Sopenharmony_ci} 6333d722a9Sopenharmony_ci 6433d722a9Sopenharmony_ciimpl Eq for Type {} 6533d722a9Sopenharmony_ci 6633d722a9Sopenharmony_ciimpl PartialEq for Type { 6733d722a9Sopenharmony_ci fn eq(&self, other: &Self) -> bool { 6833d722a9Sopenharmony_ci match (self, other) { 6933d722a9Sopenharmony_ci (Type::Ident(lhs), Type::Ident(rhs)) => lhs == rhs, 7033d722a9Sopenharmony_ci (Type::RustBox(lhs), Type::RustBox(rhs)) => lhs == rhs, 7133d722a9Sopenharmony_ci (Type::UniquePtr(lhs), Type::UniquePtr(rhs)) => lhs == rhs, 7233d722a9Sopenharmony_ci (Type::SharedPtr(lhs), Type::SharedPtr(rhs)) => lhs == rhs, 7333d722a9Sopenharmony_ci (Type::WeakPtr(lhs), Type::WeakPtr(rhs)) => lhs == rhs, 7433d722a9Sopenharmony_ci (Type::Ref(lhs), Type::Ref(rhs)) => lhs == rhs, 7533d722a9Sopenharmony_ci (Type::Str(lhs), Type::Str(rhs)) => lhs == rhs, 7633d722a9Sopenharmony_ci (Type::RustVec(lhs), Type::RustVec(rhs)) => lhs == rhs, 7733d722a9Sopenharmony_ci (Type::CxxVector(lhs), Type::CxxVector(rhs)) => lhs == rhs, 7833d722a9Sopenharmony_ci (Type::Fn(lhs), Type::Fn(rhs)) => lhs == rhs, 7933d722a9Sopenharmony_ci (Type::SliceRef(lhs), Type::SliceRef(rhs)) => lhs == rhs, 8033d722a9Sopenharmony_ci (Type::Void(_), Type::Void(_)) => true, 8133d722a9Sopenharmony_ci (_, _) => false, 8233d722a9Sopenharmony_ci } 8333d722a9Sopenharmony_ci } 8433d722a9Sopenharmony_ci} 8533d722a9Sopenharmony_ci 8633d722a9Sopenharmony_ciimpl Eq for Lifetimes {} 8733d722a9Sopenharmony_ci 8833d722a9Sopenharmony_ciimpl PartialEq for Lifetimes { 8933d722a9Sopenharmony_ci fn eq(&self, other: &Self) -> bool { 9033d722a9Sopenharmony_ci let Lifetimes { 9133d722a9Sopenharmony_ci lt_token: _, 9233d722a9Sopenharmony_ci lifetimes, 9333d722a9Sopenharmony_ci gt_token: _, 9433d722a9Sopenharmony_ci } = self; 9533d722a9Sopenharmony_ci let Lifetimes { 9633d722a9Sopenharmony_ci lt_token: _, 9733d722a9Sopenharmony_ci lifetimes: lifetimes2, 9833d722a9Sopenharmony_ci gt_token: _, 9933d722a9Sopenharmony_ci } = other; 10033d722a9Sopenharmony_ci lifetimes.iter().eq(lifetimes2) 10133d722a9Sopenharmony_ci } 10233d722a9Sopenharmony_ci} 10333d722a9Sopenharmony_ci 10433d722a9Sopenharmony_ciimpl Hash for Lifetimes { 10533d722a9Sopenharmony_ci fn hash<H: Hasher>(&self, state: &mut H) { 10633d722a9Sopenharmony_ci let Lifetimes { 10733d722a9Sopenharmony_ci lt_token: _, 10833d722a9Sopenharmony_ci lifetimes, 10933d722a9Sopenharmony_ci gt_token: _, 11033d722a9Sopenharmony_ci } = self; 11133d722a9Sopenharmony_ci lifetimes.len().hash(state); 11233d722a9Sopenharmony_ci for lifetime in lifetimes { 11333d722a9Sopenharmony_ci lifetime.hash(state); 11433d722a9Sopenharmony_ci } 11533d722a9Sopenharmony_ci } 11633d722a9Sopenharmony_ci} 11733d722a9Sopenharmony_ci 11833d722a9Sopenharmony_ciimpl Eq for Ty1 {} 11933d722a9Sopenharmony_ci 12033d722a9Sopenharmony_ciimpl PartialEq for Ty1 { 12133d722a9Sopenharmony_ci fn eq(&self, other: &Self) -> bool { 12233d722a9Sopenharmony_ci let Ty1 { 12333d722a9Sopenharmony_ci name, 12433d722a9Sopenharmony_ci langle: _, 12533d722a9Sopenharmony_ci inner, 12633d722a9Sopenharmony_ci rangle: _, 12733d722a9Sopenharmony_ci } = self; 12833d722a9Sopenharmony_ci let Ty1 { 12933d722a9Sopenharmony_ci name: name2, 13033d722a9Sopenharmony_ci langle: _, 13133d722a9Sopenharmony_ci inner: inner2, 13233d722a9Sopenharmony_ci rangle: _, 13333d722a9Sopenharmony_ci } = other; 13433d722a9Sopenharmony_ci name == name2 && inner == inner2 13533d722a9Sopenharmony_ci } 13633d722a9Sopenharmony_ci} 13733d722a9Sopenharmony_ci 13833d722a9Sopenharmony_ciimpl Hash for Ty1 { 13933d722a9Sopenharmony_ci fn hash<H: Hasher>(&self, state: &mut H) { 14033d722a9Sopenharmony_ci let Ty1 { 14133d722a9Sopenharmony_ci name, 14233d722a9Sopenharmony_ci langle: _, 14333d722a9Sopenharmony_ci inner, 14433d722a9Sopenharmony_ci rangle: _, 14533d722a9Sopenharmony_ci } = self; 14633d722a9Sopenharmony_ci name.hash(state); 14733d722a9Sopenharmony_ci inner.hash(state); 14833d722a9Sopenharmony_ci } 14933d722a9Sopenharmony_ci} 15033d722a9Sopenharmony_ci 15133d722a9Sopenharmony_ciimpl Eq for Ref {} 15233d722a9Sopenharmony_ci 15333d722a9Sopenharmony_ciimpl PartialEq for Ref { 15433d722a9Sopenharmony_ci fn eq(&self, other: &Self) -> bool { 15533d722a9Sopenharmony_ci let Ref { 15633d722a9Sopenharmony_ci pinned, 15733d722a9Sopenharmony_ci ampersand: _, 15833d722a9Sopenharmony_ci lifetime, 15933d722a9Sopenharmony_ci mutable, 16033d722a9Sopenharmony_ci inner, 16133d722a9Sopenharmony_ci pin_tokens: _, 16233d722a9Sopenharmony_ci mutability: _, 16333d722a9Sopenharmony_ci } = self; 16433d722a9Sopenharmony_ci let Ref { 16533d722a9Sopenharmony_ci pinned: pinned2, 16633d722a9Sopenharmony_ci ampersand: _, 16733d722a9Sopenharmony_ci lifetime: lifetime2, 16833d722a9Sopenharmony_ci mutable: mutable2, 16933d722a9Sopenharmony_ci inner: inner2, 17033d722a9Sopenharmony_ci pin_tokens: _, 17133d722a9Sopenharmony_ci mutability: _, 17233d722a9Sopenharmony_ci } = other; 17333d722a9Sopenharmony_ci pinned == pinned2 && lifetime == lifetime2 && mutable == mutable2 && inner == inner2 17433d722a9Sopenharmony_ci } 17533d722a9Sopenharmony_ci} 17633d722a9Sopenharmony_ci 17733d722a9Sopenharmony_ciimpl Hash for Ref { 17833d722a9Sopenharmony_ci fn hash<H: Hasher>(&self, state: &mut H) { 17933d722a9Sopenharmony_ci let Ref { 18033d722a9Sopenharmony_ci pinned, 18133d722a9Sopenharmony_ci ampersand: _, 18233d722a9Sopenharmony_ci lifetime, 18333d722a9Sopenharmony_ci mutable, 18433d722a9Sopenharmony_ci inner, 18533d722a9Sopenharmony_ci pin_tokens: _, 18633d722a9Sopenharmony_ci mutability: _, 18733d722a9Sopenharmony_ci } = self; 18833d722a9Sopenharmony_ci pinned.hash(state); 18933d722a9Sopenharmony_ci lifetime.hash(state); 19033d722a9Sopenharmony_ci mutable.hash(state); 19133d722a9Sopenharmony_ci inner.hash(state); 19233d722a9Sopenharmony_ci } 19333d722a9Sopenharmony_ci} 19433d722a9Sopenharmony_ci 19533d722a9Sopenharmony_ciimpl Eq for Ptr {} 19633d722a9Sopenharmony_ci 19733d722a9Sopenharmony_ciimpl PartialEq for Ptr { 19833d722a9Sopenharmony_ci fn eq(&self, other: &Ptr) -> bool { 19933d722a9Sopenharmony_ci let Ptr { 20033d722a9Sopenharmony_ci star: _, 20133d722a9Sopenharmony_ci mutable, 20233d722a9Sopenharmony_ci inner, 20333d722a9Sopenharmony_ci mutability: _, 20433d722a9Sopenharmony_ci constness: _, 20533d722a9Sopenharmony_ci } = self; 20633d722a9Sopenharmony_ci let Ptr { 20733d722a9Sopenharmony_ci star: _, 20833d722a9Sopenharmony_ci mutable: mutable2, 20933d722a9Sopenharmony_ci inner: inner2, 21033d722a9Sopenharmony_ci mutability: _, 21133d722a9Sopenharmony_ci constness: _, 21233d722a9Sopenharmony_ci } = other; 21333d722a9Sopenharmony_ci mutable == mutable2 && inner == inner2 21433d722a9Sopenharmony_ci } 21533d722a9Sopenharmony_ci} 21633d722a9Sopenharmony_ci 21733d722a9Sopenharmony_ciimpl Hash for Ptr { 21833d722a9Sopenharmony_ci fn hash<H: Hasher>(&self, state: &mut H) { 21933d722a9Sopenharmony_ci let Ptr { 22033d722a9Sopenharmony_ci star: _, 22133d722a9Sopenharmony_ci mutable, 22233d722a9Sopenharmony_ci inner, 22333d722a9Sopenharmony_ci mutability: _, 22433d722a9Sopenharmony_ci constness: _, 22533d722a9Sopenharmony_ci } = self; 22633d722a9Sopenharmony_ci mutable.hash(state); 22733d722a9Sopenharmony_ci inner.hash(state); 22833d722a9Sopenharmony_ci } 22933d722a9Sopenharmony_ci} 23033d722a9Sopenharmony_ci 23133d722a9Sopenharmony_ciimpl Eq for SliceRef {} 23233d722a9Sopenharmony_ci 23333d722a9Sopenharmony_ciimpl PartialEq for SliceRef { 23433d722a9Sopenharmony_ci fn eq(&self, other: &Self) -> bool { 23533d722a9Sopenharmony_ci let SliceRef { 23633d722a9Sopenharmony_ci ampersand: _, 23733d722a9Sopenharmony_ci lifetime, 23833d722a9Sopenharmony_ci mutable, 23933d722a9Sopenharmony_ci bracket: _, 24033d722a9Sopenharmony_ci inner, 24133d722a9Sopenharmony_ci mutability: _, 24233d722a9Sopenharmony_ci } = self; 24333d722a9Sopenharmony_ci let SliceRef { 24433d722a9Sopenharmony_ci ampersand: _, 24533d722a9Sopenharmony_ci lifetime: lifetime2, 24633d722a9Sopenharmony_ci mutable: mutable2, 24733d722a9Sopenharmony_ci bracket: _, 24833d722a9Sopenharmony_ci inner: inner2, 24933d722a9Sopenharmony_ci mutability: _, 25033d722a9Sopenharmony_ci } = other; 25133d722a9Sopenharmony_ci lifetime == lifetime2 && mutable == mutable2 && inner == inner2 25233d722a9Sopenharmony_ci } 25333d722a9Sopenharmony_ci} 25433d722a9Sopenharmony_ci 25533d722a9Sopenharmony_ciimpl Hash for SliceRef { 25633d722a9Sopenharmony_ci fn hash<H: Hasher>(&self, state: &mut H) { 25733d722a9Sopenharmony_ci let SliceRef { 25833d722a9Sopenharmony_ci ampersand: _, 25933d722a9Sopenharmony_ci lifetime, 26033d722a9Sopenharmony_ci mutable, 26133d722a9Sopenharmony_ci bracket: _, 26233d722a9Sopenharmony_ci inner, 26333d722a9Sopenharmony_ci mutability: _, 26433d722a9Sopenharmony_ci } = self; 26533d722a9Sopenharmony_ci lifetime.hash(state); 26633d722a9Sopenharmony_ci mutable.hash(state); 26733d722a9Sopenharmony_ci inner.hash(state); 26833d722a9Sopenharmony_ci } 26933d722a9Sopenharmony_ci} 27033d722a9Sopenharmony_ci 27133d722a9Sopenharmony_ciimpl Eq for Array {} 27233d722a9Sopenharmony_ci 27333d722a9Sopenharmony_ciimpl PartialEq for Array { 27433d722a9Sopenharmony_ci fn eq(&self, other: &Self) -> bool { 27533d722a9Sopenharmony_ci let Array { 27633d722a9Sopenharmony_ci bracket: _, 27733d722a9Sopenharmony_ci inner, 27833d722a9Sopenharmony_ci semi_token: _, 27933d722a9Sopenharmony_ci len, 28033d722a9Sopenharmony_ci len_token: _, 28133d722a9Sopenharmony_ci } = self; 28233d722a9Sopenharmony_ci let Array { 28333d722a9Sopenharmony_ci bracket: _, 28433d722a9Sopenharmony_ci inner: inner2, 28533d722a9Sopenharmony_ci semi_token: _, 28633d722a9Sopenharmony_ci len: len2, 28733d722a9Sopenharmony_ci len_token: _, 28833d722a9Sopenharmony_ci } = other; 28933d722a9Sopenharmony_ci inner == inner2 && len == len2 29033d722a9Sopenharmony_ci } 29133d722a9Sopenharmony_ci} 29233d722a9Sopenharmony_ci 29333d722a9Sopenharmony_ciimpl Hash for Array { 29433d722a9Sopenharmony_ci fn hash<H: Hasher>(&self, state: &mut H) { 29533d722a9Sopenharmony_ci let Array { 29633d722a9Sopenharmony_ci bracket: _, 29733d722a9Sopenharmony_ci inner, 29833d722a9Sopenharmony_ci semi_token: _, 29933d722a9Sopenharmony_ci len, 30033d722a9Sopenharmony_ci len_token: _, 30133d722a9Sopenharmony_ci } = self; 30233d722a9Sopenharmony_ci inner.hash(state); 30333d722a9Sopenharmony_ci len.hash(state); 30433d722a9Sopenharmony_ci } 30533d722a9Sopenharmony_ci} 30633d722a9Sopenharmony_ci 30733d722a9Sopenharmony_ciimpl Eq for Signature {} 30833d722a9Sopenharmony_ci 30933d722a9Sopenharmony_ciimpl PartialEq for Signature { 31033d722a9Sopenharmony_ci fn eq(&self, other: &Self) -> bool { 31133d722a9Sopenharmony_ci let Signature { 31233d722a9Sopenharmony_ci asyncness, 31333d722a9Sopenharmony_ci unsafety, 31433d722a9Sopenharmony_ci fn_token: _, 31533d722a9Sopenharmony_ci generics: _, 31633d722a9Sopenharmony_ci receiver, 31733d722a9Sopenharmony_ci args, 31833d722a9Sopenharmony_ci ret, 31933d722a9Sopenharmony_ci throws, 32033d722a9Sopenharmony_ci paren_token: _, 32133d722a9Sopenharmony_ci throws_tokens: _, 32233d722a9Sopenharmony_ci } = self; 32333d722a9Sopenharmony_ci let Signature { 32433d722a9Sopenharmony_ci asyncness: asyncness2, 32533d722a9Sopenharmony_ci unsafety: unsafety2, 32633d722a9Sopenharmony_ci fn_token: _, 32733d722a9Sopenharmony_ci generics: _, 32833d722a9Sopenharmony_ci receiver: receiver2, 32933d722a9Sopenharmony_ci args: args2, 33033d722a9Sopenharmony_ci ret: ret2, 33133d722a9Sopenharmony_ci throws: throws2, 33233d722a9Sopenharmony_ci paren_token: _, 33333d722a9Sopenharmony_ci throws_tokens: _, 33433d722a9Sopenharmony_ci } = other; 33533d722a9Sopenharmony_ci asyncness.is_some() == asyncness2.is_some() 33633d722a9Sopenharmony_ci && unsafety.is_some() == unsafety2.is_some() 33733d722a9Sopenharmony_ci && receiver == receiver2 33833d722a9Sopenharmony_ci && ret == ret2 33933d722a9Sopenharmony_ci && throws == throws2 34033d722a9Sopenharmony_ci && args.len() == args2.len() 34133d722a9Sopenharmony_ci && args.iter().zip(args2).all(|(arg, arg2)| { 34233d722a9Sopenharmony_ci let Var { 34333d722a9Sopenharmony_ci cfg: _, 34433d722a9Sopenharmony_ci doc: _, 34533d722a9Sopenharmony_ci attrs: _, 34633d722a9Sopenharmony_ci visibility: _, 34733d722a9Sopenharmony_ci name: _, 34833d722a9Sopenharmony_ci colon_token: _, 34933d722a9Sopenharmony_ci ty, 35033d722a9Sopenharmony_ci } = arg; 35133d722a9Sopenharmony_ci let Var { 35233d722a9Sopenharmony_ci cfg: _, 35333d722a9Sopenharmony_ci doc: _, 35433d722a9Sopenharmony_ci attrs: _, 35533d722a9Sopenharmony_ci visibility: _, 35633d722a9Sopenharmony_ci name: _, 35733d722a9Sopenharmony_ci colon_token: _, 35833d722a9Sopenharmony_ci ty: ty2, 35933d722a9Sopenharmony_ci } = arg2; 36033d722a9Sopenharmony_ci ty == ty2 36133d722a9Sopenharmony_ci }) 36233d722a9Sopenharmony_ci } 36333d722a9Sopenharmony_ci} 36433d722a9Sopenharmony_ci 36533d722a9Sopenharmony_ciimpl Hash for Signature { 36633d722a9Sopenharmony_ci fn hash<H: Hasher>(&self, state: &mut H) { 36733d722a9Sopenharmony_ci let Signature { 36833d722a9Sopenharmony_ci asyncness, 36933d722a9Sopenharmony_ci unsafety, 37033d722a9Sopenharmony_ci fn_token: _, 37133d722a9Sopenharmony_ci generics: _, 37233d722a9Sopenharmony_ci receiver, 37333d722a9Sopenharmony_ci args, 37433d722a9Sopenharmony_ci ret, 37533d722a9Sopenharmony_ci throws, 37633d722a9Sopenharmony_ci paren_token: _, 37733d722a9Sopenharmony_ci throws_tokens: _, 37833d722a9Sopenharmony_ci } = self; 37933d722a9Sopenharmony_ci asyncness.is_some().hash(state); 38033d722a9Sopenharmony_ci unsafety.is_some().hash(state); 38133d722a9Sopenharmony_ci receiver.hash(state); 38233d722a9Sopenharmony_ci for arg in args { 38333d722a9Sopenharmony_ci let Var { 38433d722a9Sopenharmony_ci cfg: _, 38533d722a9Sopenharmony_ci doc: _, 38633d722a9Sopenharmony_ci attrs: _, 38733d722a9Sopenharmony_ci visibility: _, 38833d722a9Sopenharmony_ci name: _, 38933d722a9Sopenharmony_ci colon_token: _, 39033d722a9Sopenharmony_ci ty, 39133d722a9Sopenharmony_ci } = arg; 39233d722a9Sopenharmony_ci ty.hash(state); 39333d722a9Sopenharmony_ci } 39433d722a9Sopenharmony_ci ret.hash(state); 39533d722a9Sopenharmony_ci throws.hash(state); 39633d722a9Sopenharmony_ci } 39733d722a9Sopenharmony_ci} 39833d722a9Sopenharmony_ci 39933d722a9Sopenharmony_ciimpl Eq for Receiver {} 40033d722a9Sopenharmony_ci 40133d722a9Sopenharmony_ciimpl PartialEq for Receiver { 40233d722a9Sopenharmony_ci fn eq(&self, other: &Self) -> bool { 40333d722a9Sopenharmony_ci let Receiver { 40433d722a9Sopenharmony_ci pinned, 40533d722a9Sopenharmony_ci ampersand: _, 40633d722a9Sopenharmony_ci lifetime, 40733d722a9Sopenharmony_ci mutable, 40833d722a9Sopenharmony_ci var: _, 40933d722a9Sopenharmony_ci colon_token: _, 41033d722a9Sopenharmony_ci ty, 41133d722a9Sopenharmony_ci shorthand: _, 41233d722a9Sopenharmony_ci pin_tokens: _, 41333d722a9Sopenharmony_ci mutability: _, 41433d722a9Sopenharmony_ci } = self; 41533d722a9Sopenharmony_ci let Receiver { 41633d722a9Sopenharmony_ci pinned: pinned2, 41733d722a9Sopenharmony_ci ampersand: _, 41833d722a9Sopenharmony_ci lifetime: lifetime2, 41933d722a9Sopenharmony_ci mutable: mutable2, 42033d722a9Sopenharmony_ci var: _, 42133d722a9Sopenharmony_ci colon_token: _, 42233d722a9Sopenharmony_ci ty: ty2, 42333d722a9Sopenharmony_ci shorthand: _, 42433d722a9Sopenharmony_ci pin_tokens: _, 42533d722a9Sopenharmony_ci mutability: _, 42633d722a9Sopenharmony_ci } = other; 42733d722a9Sopenharmony_ci pinned == pinned2 && lifetime == lifetime2 && mutable == mutable2 && ty == ty2 42833d722a9Sopenharmony_ci } 42933d722a9Sopenharmony_ci} 43033d722a9Sopenharmony_ci 43133d722a9Sopenharmony_ciimpl Hash for Receiver { 43233d722a9Sopenharmony_ci fn hash<H: Hasher>(&self, state: &mut H) { 43333d722a9Sopenharmony_ci let Receiver { 43433d722a9Sopenharmony_ci pinned, 43533d722a9Sopenharmony_ci ampersand: _, 43633d722a9Sopenharmony_ci lifetime, 43733d722a9Sopenharmony_ci mutable, 43833d722a9Sopenharmony_ci var: _, 43933d722a9Sopenharmony_ci colon_token: _, 44033d722a9Sopenharmony_ci ty, 44133d722a9Sopenharmony_ci shorthand: _, 44233d722a9Sopenharmony_ci pin_tokens: _, 44333d722a9Sopenharmony_ci mutability: _, 44433d722a9Sopenharmony_ci } = self; 44533d722a9Sopenharmony_ci pinned.hash(state); 44633d722a9Sopenharmony_ci lifetime.hash(state); 44733d722a9Sopenharmony_ci mutable.hash(state); 44833d722a9Sopenharmony_ci ty.hash(state); 44933d722a9Sopenharmony_ci } 45033d722a9Sopenharmony_ci} 451