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