xref: /linux/rust/syn/gen/visit.rs (revision 808c999fc9e7c366fd47da564e69d579c1dc8279)
1 // This file is @generated by syn-internal-codegen.
2 // It is not intended for manual editing.
3 
4 #![allow(unused_variables)]
5 #![allow(clippy::needless_pass_by_ref_mut)]
6 #[cfg(any(feature = "full", feature = "derive"))]
7 use crate::punctuated::Punctuated;
8 #[cfg(feature = "full")]
9 macro_rules! full {
10     ($e:expr) => {
11         $e
12     };
13 }
14 #[cfg(all(feature = "derive", not(feature = "full")))]
15 macro_rules! full {
16     ($e:expr) => {
17         unreachable!()
18     };
19 }
20 macro_rules! skip {
21     ($($tt:tt)*) => {};
22 }
23 /// Syntax tree traversal to walk a shared borrow of a syntax tree.
24 ///
25 /// See the [module documentation] for details.
26 ///
27 /// [module documentation]: self
28 pub trait Visit<'ast> {
29     #[cfg(any(feature = "derive", feature = "full"))]
30     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
31     fn visit_abi(&mut self, i: &'ast crate::Abi) {
32         visit_abi(self, i);
33     }
34     #[cfg(any(feature = "derive", feature = "full"))]
35     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
36     fn visit_angle_bracketed_generic_arguments(
37         &mut self,
38         i: &'ast crate::AngleBracketedGenericArguments,
39     ) {
40         visit_angle_bracketed_generic_arguments(self, i);
41     }
42     #[cfg(feature = "full")]
43     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
44     fn visit_arm(&mut self, i: &'ast crate::Arm) {
45         visit_arm(self, i);
46     }
47     #[cfg(any(feature = "derive", feature = "full"))]
48     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
49     fn visit_assoc_const(&mut self, i: &'ast crate::AssocConst) {
50         visit_assoc_const(self, i);
51     }
52     #[cfg(any(feature = "derive", feature = "full"))]
53     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
54     fn visit_assoc_type(&mut self, i: &'ast crate::AssocType) {
55         visit_assoc_type(self, i);
56     }
57     #[cfg(any(feature = "derive", feature = "full"))]
58     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
59     fn visit_attr_style(&mut self, i: &'ast crate::AttrStyle) {
60         visit_attr_style(self, i);
61     }
62     #[cfg(any(feature = "derive", feature = "full"))]
63     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
64     fn visit_attribute(&mut self, i: &'ast crate::Attribute) {
65         visit_attribute(self, i);
66     }
67     #[cfg(any(feature = "derive", feature = "full"))]
68     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
69     fn visit_bare_fn_arg(&mut self, i: &'ast crate::BareFnArg) {
70         visit_bare_fn_arg(self, i);
71     }
72     #[cfg(any(feature = "derive", feature = "full"))]
73     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
74     fn visit_bare_variadic(&mut self, i: &'ast crate::BareVariadic) {
75         visit_bare_variadic(self, i);
76     }
77     #[cfg(any(feature = "derive", feature = "full"))]
78     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
79     fn visit_bin_op(&mut self, i: &'ast crate::BinOp) {
80         visit_bin_op(self, i);
81     }
82     #[cfg(feature = "full")]
83     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
84     fn visit_block(&mut self, i: &'ast crate::Block) {
85         visit_block(self, i);
86     }
87     #[cfg(any(feature = "derive", feature = "full"))]
88     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
89     fn visit_bound_lifetimes(&mut self, i: &'ast crate::BoundLifetimes) {
90         visit_bound_lifetimes(self, i);
91     }
92     #[cfg(feature = "full")]
93     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
94     fn visit_captured_param(&mut self, i: &'ast crate::CapturedParam) {
95         visit_captured_param(self, i);
96     }
97     #[cfg(any(feature = "derive", feature = "full"))]
98     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
99     fn visit_const_param(&mut self, i: &'ast crate::ConstParam) {
100         visit_const_param(self, i);
101     }
102     #[cfg(any(feature = "derive", feature = "full"))]
103     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
104     fn visit_constraint(&mut self, i: &'ast crate::Constraint) {
105         visit_constraint(self, i);
106     }
107     #[cfg(feature = "derive")]
108     #[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
109     fn visit_data(&mut self, i: &'ast crate::Data) {
110         visit_data(self, i);
111     }
112     #[cfg(feature = "derive")]
113     #[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
114     fn visit_data_enum(&mut self, i: &'ast crate::DataEnum) {
115         visit_data_enum(self, i);
116     }
117     #[cfg(feature = "derive")]
118     #[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
119     fn visit_data_struct(&mut self, i: &'ast crate::DataStruct) {
120         visit_data_struct(self, i);
121     }
122     #[cfg(feature = "derive")]
123     #[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
124     fn visit_data_union(&mut self, i: &'ast crate::DataUnion) {
125         visit_data_union(self, i);
126     }
127     #[cfg(feature = "derive")]
128     #[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
129     fn visit_derive_input(&mut self, i: &'ast crate::DeriveInput) {
130         visit_derive_input(self, i);
131     }
132     #[cfg(any(feature = "derive", feature = "full"))]
133     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
134     fn visit_expr(&mut self, i: &'ast crate::Expr) {
135         visit_expr(self, i);
136     }
137     #[cfg(feature = "full")]
138     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
139     fn visit_expr_array(&mut self, i: &'ast crate::ExprArray) {
140         visit_expr_array(self, i);
141     }
142     #[cfg(feature = "full")]
143     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
144     fn visit_expr_assign(&mut self, i: &'ast crate::ExprAssign) {
145         visit_expr_assign(self, i);
146     }
147     #[cfg(feature = "full")]
148     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
149     fn visit_expr_async(&mut self, i: &'ast crate::ExprAsync) {
150         visit_expr_async(self, i);
151     }
152     #[cfg(feature = "full")]
153     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
154     fn visit_expr_await(&mut self, i: &'ast crate::ExprAwait) {
155         visit_expr_await(self, i);
156     }
157     #[cfg(any(feature = "derive", feature = "full"))]
158     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
159     fn visit_expr_binary(&mut self, i: &'ast crate::ExprBinary) {
160         visit_expr_binary(self, i);
161     }
162     #[cfg(feature = "full")]
163     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
164     fn visit_expr_block(&mut self, i: &'ast crate::ExprBlock) {
165         visit_expr_block(self, i);
166     }
167     #[cfg(feature = "full")]
168     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
169     fn visit_expr_break(&mut self, i: &'ast crate::ExprBreak) {
170         visit_expr_break(self, i);
171     }
172     #[cfg(any(feature = "derive", feature = "full"))]
173     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
174     fn visit_expr_call(&mut self, i: &'ast crate::ExprCall) {
175         visit_expr_call(self, i);
176     }
177     #[cfg(any(feature = "derive", feature = "full"))]
178     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
179     fn visit_expr_cast(&mut self, i: &'ast crate::ExprCast) {
180         visit_expr_cast(self, i);
181     }
182     #[cfg(feature = "full")]
183     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
184     fn visit_expr_closure(&mut self, i: &'ast crate::ExprClosure) {
185         visit_expr_closure(self, i);
186     }
187     #[cfg(feature = "full")]
188     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
189     fn visit_expr_const(&mut self, i: &'ast crate::ExprConst) {
190         visit_expr_const(self, i);
191     }
192     #[cfg(feature = "full")]
193     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
194     fn visit_expr_continue(&mut self, i: &'ast crate::ExprContinue) {
195         visit_expr_continue(self, i);
196     }
197     #[cfg(any(feature = "derive", feature = "full"))]
198     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
199     fn visit_expr_field(&mut self, i: &'ast crate::ExprField) {
200         visit_expr_field(self, i);
201     }
202     #[cfg(feature = "full")]
203     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
204     fn visit_expr_for_loop(&mut self, i: &'ast crate::ExprForLoop) {
205         visit_expr_for_loop(self, i);
206     }
207     #[cfg(any(feature = "derive", feature = "full"))]
208     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
209     fn visit_expr_group(&mut self, i: &'ast crate::ExprGroup) {
210         visit_expr_group(self, i);
211     }
212     #[cfg(feature = "full")]
213     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
214     fn visit_expr_if(&mut self, i: &'ast crate::ExprIf) {
215         visit_expr_if(self, i);
216     }
217     #[cfg(any(feature = "derive", feature = "full"))]
218     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
219     fn visit_expr_index(&mut self, i: &'ast crate::ExprIndex) {
220         visit_expr_index(self, i);
221     }
222     #[cfg(feature = "full")]
223     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
224     fn visit_expr_infer(&mut self, i: &'ast crate::ExprInfer) {
225         visit_expr_infer(self, i);
226     }
227     #[cfg(feature = "full")]
228     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
229     fn visit_expr_let(&mut self, i: &'ast crate::ExprLet) {
230         visit_expr_let(self, i);
231     }
232     #[cfg(any(feature = "derive", feature = "full"))]
233     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
234     fn visit_expr_lit(&mut self, i: &'ast crate::ExprLit) {
235         visit_expr_lit(self, i);
236     }
237     #[cfg(feature = "full")]
238     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
239     fn visit_expr_loop(&mut self, i: &'ast crate::ExprLoop) {
240         visit_expr_loop(self, i);
241     }
242     #[cfg(any(feature = "derive", feature = "full"))]
243     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
244     fn visit_expr_macro(&mut self, i: &'ast crate::ExprMacro) {
245         visit_expr_macro(self, i);
246     }
247     #[cfg(feature = "full")]
248     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
249     fn visit_expr_match(&mut self, i: &'ast crate::ExprMatch) {
250         visit_expr_match(self, i);
251     }
252     #[cfg(any(feature = "derive", feature = "full"))]
253     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
254     fn visit_expr_method_call(&mut self, i: &'ast crate::ExprMethodCall) {
255         visit_expr_method_call(self, i);
256     }
257     #[cfg(any(feature = "derive", feature = "full"))]
258     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
259     fn visit_expr_paren(&mut self, i: &'ast crate::ExprParen) {
260         visit_expr_paren(self, i);
261     }
262     #[cfg(any(feature = "derive", feature = "full"))]
263     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
264     fn visit_expr_path(&mut self, i: &'ast crate::ExprPath) {
265         visit_expr_path(self, i);
266     }
267     #[cfg(feature = "full")]
268     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
269     fn visit_expr_range(&mut self, i: &'ast crate::ExprRange) {
270         visit_expr_range(self, i);
271     }
272     #[cfg(feature = "full")]
273     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
274     fn visit_expr_raw_addr(&mut self, i: &'ast crate::ExprRawAddr) {
275         visit_expr_raw_addr(self, i);
276     }
277     #[cfg(any(feature = "derive", feature = "full"))]
278     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
279     fn visit_expr_reference(&mut self, i: &'ast crate::ExprReference) {
280         visit_expr_reference(self, i);
281     }
282     #[cfg(feature = "full")]
283     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
284     fn visit_expr_repeat(&mut self, i: &'ast crate::ExprRepeat) {
285         visit_expr_repeat(self, i);
286     }
287     #[cfg(feature = "full")]
288     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
289     fn visit_expr_return(&mut self, i: &'ast crate::ExprReturn) {
290         visit_expr_return(self, i);
291     }
292     #[cfg(any(feature = "derive", feature = "full"))]
293     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
294     fn visit_expr_struct(&mut self, i: &'ast crate::ExprStruct) {
295         visit_expr_struct(self, i);
296     }
297     #[cfg(feature = "full")]
298     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
299     fn visit_expr_try(&mut self, i: &'ast crate::ExprTry) {
300         visit_expr_try(self, i);
301     }
302     #[cfg(feature = "full")]
303     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
304     fn visit_expr_try_block(&mut self, i: &'ast crate::ExprTryBlock) {
305         visit_expr_try_block(self, i);
306     }
307     #[cfg(any(feature = "derive", feature = "full"))]
308     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
309     fn visit_expr_tuple(&mut self, i: &'ast crate::ExprTuple) {
310         visit_expr_tuple(self, i);
311     }
312     #[cfg(any(feature = "derive", feature = "full"))]
313     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
314     fn visit_expr_unary(&mut self, i: &'ast crate::ExprUnary) {
315         visit_expr_unary(self, i);
316     }
317     #[cfg(feature = "full")]
318     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
319     fn visit_expr_unsafe(&mut self, i: &'ast crate::ExprUnsafe) {
320         visit_expr_unsafe(self, i);
321     }
322     #[cfg(feature = "full")]
323     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
324     fn visit_expr_while(&mut self, i: &'ast crate::ExprWhile) {
325         visit_expr_while(self, i);
326     }
327     #[cfg(feature = "full")]
328     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
329     fn visit_expr_yield(&mut self, i: &'ast crate::ExprYield) {
330         visit_expr_yield(self, i);
331     }
332     #[cfg(any(feature = "derive", feature = "full"))]
333     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
334     fn visit_field(&mut self, i: &'ast crate::Field) {
335         visit_field(self, i);
336     }
337     #[cfg(any(feature = "derive", feature = "full"))]
338     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
339     fn visit_field_mutability(&mut self, i: &'ast crate::FieldMutability) {
340         visit_field_mutability(self, i);
341     }
342     #[cfg(feature = "full")]
343     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
344     fn visit_field_pat(&mut self, i: &'ast crate::FieldPat) {
345         visit_field_pat(self, i);
346     }
347     #[cfg(any(feature = "derive", feature = "full"))]
348     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
349     fn visit_field_value(&mut self, i: &'ast crate::FieldValue) {
350         visit_field_value(self, i);
351     }
352     #[cfg(any(feature = "derive", feature = "full"))]
353     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
354     fn visit_fields(&mut self, i: &'ast crate::Fields) {
355         visit_fields(self, i);
356     }
357     #[cfg(any(feature = "derive", feature = "full"))]
358     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
359     fn visit_fields_named(&mut self, i: &'ast crate::FieldsNamed) {
360         visit_fields_named(self, i);
361     }
362     #[cfg(any(feature = "derive", feature = "full"))]
363     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
364     fn visit_fields_unnamed(&mut self, i: &'ast crate::FieldsUnnamed) {
365         visit_fields_unnamed(self, i);
366     }
367     #[cfg(feature = "full")]
368     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
369     fn visit_file(&mut self, i: &'ast crate::File) {
370         visit_file(self, i);
371     }
372     #[cfg(feature = "full")]
373     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
374     fn visit_fn_arg(&mut self, i: &'ast crate::FnArg) {
375         visit_fn_arg(self, i);
376     }
377     #[cfg(feature = "full")]
378     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
379     fn visit_foreign_item(&mut self, i: &'ast crate::ForeignItem) {
380         visit_foreign_item(self, i);
381     }
382     #[cfg(feature = "full")]
383     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
384     fn visit_foreign_item_fn(&mut self, i: &'ast crate::ForeignItemFn) {
385         visit_foreign_item_fn(self, i);
386     }
387     #[cfg(feature = "full")]
388     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
389     fn visit_foreign_item_macro(&mut self, i: &'ast crate::ForeignItemMacro) {
390         visit_foreign_item_macro(self, i);
391     }
392     #[cfg(feature = "full")]
393     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
394     fn visit_foreign_item_static(&mut self, i: &'ast crate::ForeignItemStatic) {
395         visit_foreign_item_static(self, i);
396     }
397     #[cfg(feature = "full")]
398     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
399     fn visit_foreign_item_type(&mut self, i: &'ast crate::ForeignItemType) {
400         visit_foreign_item_type(self, i);
401     }
402     #[cfg(any(feature = "derive", feature = "full"))]
403     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
404     fn visit_generic_argument(&mut self, i: &'ast crate::GenericArgument) {
405         visit_generic_argument(self, i);
406     }
407     #[cfg(any(feature = "derive", feature = "full"))]
408     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
409     fn visit_generic_param(&mut self, i: &'ast crate::GenericParam) {
410         visit_generic_param(self, i);
411     }
412     #[cfg(any(feature = "derive", feature = "full"))]
413     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
414     fn visit_generics(&mut self, i: &'ast crate::Generics) {
415         visit_generics(self, i);
416     }
417     fn visit_ident(&mut self, i: &'ast proc_macro2::Ident) {
418         visit_ident(self, i);
419     }
420     #[cfg(feature = "full")]
421     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
422     fn visit_impl_item(&mut self, i: &'ast crate::ImplItem) {
423         visit_impl_item(self, i);
424     }
425     #[cfg(feature = "full")]
426     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
427     fn visit_impl_item_const(&mut self, i: &'ast crate::ImplItemConst) {
428         visit_impl_item_const(self, i);
429     }
430     #[cfg(feature = "full")]
431     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
432     fn visit_impl_item_fn(&mut self, i: &'ast crate::ImplItemFn) {
433         visit_impl_item_fn(self, i);
434     }
435     #[cfg(feature = "full")]
436     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
437     fn visit_impl_item_macro(&mut self, i: &'ast crate::ImplItemMacro) {
438         visit_impl_item_macro(self, i);
439     }
440     #[cfg(feature = "full")]
441     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
442     fn visit_impl_item_type(&mut self, i: &'ast crate::ImplItemType) {
443         visit_impl_item_type(self, i);
444     }
445     #[cfg(feature = "full")]
446     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
447     fn visit_impl_restriction(&mut self, i: &'ast crate::ImplRestriction) {
448         visit_impl_restriction(self, i);
449     }
450     #[cfg(any(feature = "derive", feature = "full"))]
451     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
452     fn visit_index(&mut self, i: &'ast crate::Index) {
453         visit_index(self, i);
454     }
455     #[cfg(feature = "full")]
456     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
457     fn visit_item(&mut self, i: &'ast crate::Item) {
458         visit_item(self, i);
459     }
460     #[cfg(feature = "full")]
461     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
462     fn visit_item_const(&mut self, i: &'ast crate::ItemConst) {
463         visit_item_const(self, i);
464     }
465     #[cfg(feature = "full")]
466     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
467     fn visit_item_enum(&mut self, i: &'ast crate::ItemEnum) {
468         visit_item_enum(self, i);
469     }
470     #[cfg(feature = "full")]
471     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
472     fn visit_item_extern_crate(&mut self, i: &'ast crate::ItemExternCrate) {
473         visit_item_extern_crate(self, i);
474     }
475     #[cfg(feature = "full")]
476     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
477     fn visit_item_fn(&mut self, i: &'ast crate::ItemFn) {
478         visit_item_fn(self, i);
479     }
480     #[cfg(feature = "full")]
481     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
482     fn visit_item_foreign_mod(&mut self, i: &'ast crate::ItemForeignMod) {
483         visit_item_foreign_mod(self, i);
484     }
485     #[cfg(feature = "full")]
486     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
487     fn visit_item_impl(&mut self, i: &'ast crate::ItemImpl) {
488         visit_item_impl(self, i);
489     }
490     #[cfg(feature = "full")]
491     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
492     fn visit_item_macro(&mut self, i: &'ast crate::ItemMacro) {
493         visit_item_macro(self, i);
494     }
495     #[cfg(feature = "full")]
496     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
497     fn visit_item_mod(&mut self, i: &'ast crate::ItemMod) {
498         visit_item_mod(self, i);
499     }
500     #[cfg(feature = "full")]
501     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
502     fn visit_item_static(&mut self, i: &'ast crate::ItemStatic) {
503         visit_item_static(self, i);
504     }
505     #[cfg(feature = "full")]
506     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
507     fn visit_item_struct(&mut self, i: &'ast crate::ItemStruct) {
508         visit_item_struct(self, i);
509     }
510     #[cfg(feature = "full")]
511     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
512     fn visit_item_trait(&mut self, i: &'ast crate::ItemTrait) {
513         visit_item_trait(self, i);
514     }
515     #[cfg(feature = "full")]
516     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
517     fn visit_item_trait_alias(&mut self, i: &'ast crate::ItemTraitAlias) {
518         visit_item_trait_alias(self, i);
519     }
520     #[cfg(feature = "full")]
521     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
522     fn visit_item_type(&mut self, i: &'ast crate::ItemType) {
523         visit_item_type(self, i);
524     }
525     #[cfg(feature = "full")]
526     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
527     fn visit_item_union(&mut self, i: &'ast crate::ItemUnion) {
528         visit_item_union(self, i);
529     }
530     #[cfg(feature = "full")]
531     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
532     fn visit_item_use(&mut self, i: &'ast crate::ItemUse) {
533         visit_item_use(self, i);
534     }
535     #[cfg(feature = "full")]
536     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
537     fn visit_label(&mut self, i: &'ast crate::Label) {
538         visit_label(self, i);
539     }
540     fn visit_lifetime(&mut self, i: &'ast crate::Lifetime) {
541         visit_lifetime(self, i);
542     }
543     #[cfg(any(feature = "derive", feature = "full"))]
544     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
545     fn visit_lifetime_param(&mut self, i: &'ast crate::LifetimeParam) {
546         visit_lifetime_param(self, i);
547     }
548     fn visit_lit(&mut self, i: &'ast crate::Lit) {
549         visit_lit(self, i);
550     }
551     fn visit_lit_bool(&mut self, i: &'ast crate::LitBool) {
552         visit_lit_bool(self, i);
553     }
554     fn visit_lit_byte(&mut self, i: &'ast crate::LitByte) {
555         visit_lit_byte(self, i);
556     }
557     fn visit_lit_byte_str(&mut self, i: &'ast crate::LitByteStr) {
558         visit_lit_byte_str(self, i);
559     }
560     fn visit_lit_cstr(&mut self, i: &'ast crate::LitCStr) {
561         visit_lit_cstr(self, i);
562     }
563     fn visit_lit_char(&mut self, i: &'ast crate::LitChar) {
564         visit_lit_char(self, i);
565     }
566     fn visit_lit_float(&mut self, i: &'ast crate::LitFloat) {
567         visit_lit_float(self, i);
568     }
569     fn visit_lit_int(&mut self, i: &'ast crate::LitInt) {
570         visit_lit_int(self, i);
571     }
572     fn visit_lit_str(&mut self, i: &'ast crate::LitStr) {
573         visit_lit_str(self, i);
574     }
575     #[cfg(feature = "full")]
576     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
577     fn visit_local(&mut self, i: &'ast crate::Local) {
578         visit_local(self, i);
579     }
580     #[cfg(feature = "full")]
581     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
582     fn visit_local_init(&mut self, i: &'ast crate::LocalInit) {
583         visit_local_init(self, i);
584     }
585     #[cfg(any(feature = "derive", feature = "full"))]
586     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
587     fn visit_macro(&mut self, i: &'ast crate::Macro) {
588         visit_macro(self, i);
589     }
590     #[cfg(any(feature = "derive", feature = "full"))]
591     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
592     fn visit_macro_delimiter(&mut self, i: &'ast crate::MacroDelimiter) {
593         visit_macro_delimiter(self, i);
594     }
595     #[cfg(any(feature = "derive", feature = "full"))]
596     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
597     fn visit_member(&mut self, i: &'ast crate::Member) {
598         visit_member(self, i);
599     }
600     #[cfg(any(feature = "derive", feature = "full"))]
601     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
602     fn visit_meta(&mut self, i: &'ast crate::Meta) {
603         visit_meta(self, i);
604     }
605     #[cfg(any(feature = "derive", feature = "full"))]
606     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
607     fn visit_meta_list(&mut self, i: &'ast crate::MetaList) {
608         visit_meta_list(self, i);
609     }
610     #[cfg(any(feature = "derive", feature = "full"))]
611     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
612     fn visit_meta_name_value(&mut self, i: &'ast crate::MetaNameValue) {
613         visit_meta_name_value(self, i);
614     }
615     #[cfg(any(feature = "derive", feature = "full"))]
616     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
617     fn visit_parenthesized_generic_arguments(
618         &mut self,
619         i: &'ast crate::ParenthesizedGenericArguments,
620     ) {
621         visit_parenthesized_generic_arguments(self, i);
622     }
623     #[cfg(feature = "full")]
624     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
625     fn visit_pat(&mut self, i: &'ast crate::Pat) {
626         visit_pat(self, i);
627     }
628     #[cfg(feature = "full")]
629     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
630     fn visit_pat_ident(&mut self, i: &'ast crate::PatIdent) {
631         visit_pat_ident(self, i);
632     }
633     #[cfg(feature = "full")]
634     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
635     fn visit_pat_or(&mut self, i: &'ast crate::PatOr) {
636         visit_pat_or(self, i);
637     }
638     #[cfg(feature = "full")]
639     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
640     fn visit_pat_paren(&mut self, i: &'ast crate::PatParen) {
641         visit_pat_paren(self, i);
642     }
643     #[cfg(feature = "full")]
644     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
645     fn visit_pat_reference(&mut self, i: &'ast crate::PatReference) {
646         visit_pat_reference(self, i);
647     }
648     #[cfg(feature = "full")]
649     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
650     fn visit_pat_rest(&mut self, i: &'ast crate::PatRest) {
651         visit_pat_rest(self, i);
652     }
653     #[cfg(feature = "full")]
654     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
655     fn visit_pat_slice(&mut self, i: &'ast crate::PatSlice) {
656         visit_pat_slice(self, i);
657     }
658     #[cfg(feature = "full")]
659     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
660     fn visit_pat_struct(&mut self, i: &'ast crate::PatStruct) {
661         visit_pat_struct(self, i);
662     }
663     #[cfg(feature = "full")]
664     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
665     fn visit_pat_tuple(&mut self, i: &'ast crate::PatTuple) {
666         visit_pat_tuple(self, i);
667     }
668     #[cfg(feature = "full")]
669     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
670     fn visit_pat_tuple_struct(&mut self, i: &'ast crate::PatTupleStruct) {
671         visit_pat_tuple_struct(self, i);
672     }
673     #[cfg(feature = "full")]
674     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
675     fn visit_pat_type(&mut self, i: &'ast crate::PatType) {
676         visit_pat_type(self, i);
677     }
678     #[cfg(feature = "full")]
679     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
680     fn visit_pat_wild(&mut self, i: &'ast crate::PatWild) {
681         visit_pat_wild(self, i);
682     }
683     #[cfg(any(feature = "derive", feature = "full"))]
684     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
685     fn visit_path(&mut self, i: &'ast crate::Path) {
686         visit_path(self, i);
687     }
688     #[cfg(any(feature = "derive", feature = "full"))]
689     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
690     fn visit_path_arguments(&mut self, i: &'ast crate::PathArguments) {
691         visit_path_arguments(self, i);
692     }
693     #[cfg(any(feature = "derive", feature = "full"))]
694     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
695     fn visit_path_segment(&mut self, i: &'ast crate::PathSegment) {
696         visit_path_segment(self, i);
697     }
698     #[cfg(feature = "full")]
699     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
700     fn visit_pointer_mutability(&mut self, i: &'ast crate::PointerMutability) {
701         visit_pointer_mutability(self, i);
702     }
703     #[cfg(feature = "full")]
704     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
705     fn visit_precise_capture(&mut self, i: &'ast crate::PreciseCapture) {
706         visit_precise_capture(self, i);
707     }
708     #[cfg(any(feature = "derive", feature = "full"))]
709     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
710     fn visit_predicate_lifetime(&mut self, i: &'ast crate::PredicateLifetime) {
711         visit_predicate_lifetime(self, i);
712     }
713     #[cfg(any(feature = "derive", feature = "full"))]
714     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
715     fn visit_predicate_type(&mut self, i: &'ast crate::PredicateType) {
716         visit_predicate_type(self, i);
717     }
718     #[cfg(any(feature = "derive", feature = "full"))]
719     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
720     fn visit_qself(&mut self, i: &'ast crate::QSelf) {
721         visit_qself(self, i);
722     }
723     #[cfg(feature = "full")]
724     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
725     fn visit_range_limits(&mut self, i: &'ast crate::RangeLimits) {
726         visit_range_limits(self, i);
727     }
728     #[cfg(feature = "full")]
729     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
730     fn visit_receiver(&mut self, i: &'ast crate::Receiver) {
731         visit_receiver(self, i);
732     }
733     #[cfg(any(feature = "derive", feature = "full"))]
734     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
735     fn visit_return_type(&mut self, i: &'ast crate::ReturnType) {
736         visit_return_type(self, i);
737     }
738     #[cfg(feature = "full")]
739     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
740     fn visit_signature(&mut self, i: &'ast crate::Signature) {
741         visit_signature(self, i);
742     }
743     fn visit_span(&mut self, i: &proc_macro2::Span) {}
744     #[cfg(feature = "full")]
745     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
746     fn visit_static_mutability(&mut self, i: &'ast crate::StaticMutability) {
747         visit_static_mutability(self, i);
748     }
749     #[cfg(feature = "full")]
750     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
751     fn visit_stmt(&mut self, i: &'ast crate::Stmt) {
752         visit_stmt(self, i);
753     }
754     #[cfg(feature = "full")]
755     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
756     fn visit_stmt_macro(&mut self, i: &'ast crate::StmtMacro) {
757         visit_stmt_macro(self, i);
758     }
759     fn visit_token_stream(&mut self, i: &'ast proc_macro2::TokenStream) {}
760     #[cfg(any(feature = "derive", feature = "full"))]
761     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
762     fn visit_trait_bound(&mut self, i: &'ast crate::TraitBound) {
763         visit_trait_bound(self, i);
764     }
765     #[cfg(any(feature = "derive", feature = "full"))]
766     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
767     fn visit_trait_bound_modifier(&mut self, i: &'ast crate::TraitBoundModifier) {
768         visit_trait_bound_modifier(self, i);
769     }
770     #[cfg(feature = "full")]
771     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
772     fn visit_trait_item(&mut self, i: &'ast crate::TraitItem) {
773         visit_trait_item(self, i);
774     }
775     #[cfg(feature = "full")]
776     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
777     fn visit_trait_item_const(&mut self, i: &'ast crate::TraitItemConst) {
778         visit_trait_item_const(self, i);
779     }
780     #[cfg(feature = "full")]
781     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
782     fn visit_trait_item_fn(&mut self, i: &'ast crate::TraitItemFn) {
783         visit_trait_item_fn(self, i);
784     }
785     #[cfg(feature = "full")]
786     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
787     fn visit_trait_item_macro(&mut self, i: &'ast crate::TraitItemMacro) {
788         visit_trait_item_macro(self, i);
789     }
790     #[cfg(feature = "full")]
791     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
792     fn visit_trait_item_type(&mut self, i: &'ast crate::TraitItemType) {
793         visit_trait_item_type(self, i);
794     }
795     #[cfg(any(feature = "derive", feature = "full"))]
796     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
797     fn visit_type(&mut self, i: &'ast crate::Type) {
798         visit_type(self, i);
799     }
800     #[cfg(any(feature = "derive", feature = "full"))]
801     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
802     fn visit_type_array(&mut self, i: &'ast crate::TypeArray) {
803         visit_type_array(self, i);
804     }
805     #[cfg(any(feature = "derive", feature = "full"))]
806     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
807     fn visit_type_bare_fn(&mut self, i: &'ast crate::TypeBareFn) {
808         visit_type_bare_fn(self, i);
809     }
810     #[cfg(any(feature = "derive", feature = "full"))]
811     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
812     fn visit_type_group(&mut self, i: &'ast crate::TypeGroup) {
813         visit_type_group(self, i);
814     }
815     #[cfg(any(feature = "derive", feature = "full"))]
816     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
817     fn visit_type_impl_trait(&mut self, i: &'ast crate::TypeImplTrait) {
818         visit_type_impl_trait(self, i);
819     }
820     #[cfg(any(feature = "derive", feature = "full"))]
821     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
822     fn visit_type_infer(&mut self, i: &'ast crate::TypeInfer) {
823         visit_type_infer(self, i);
824     }
825     #[cfg(any(feature = "derive", feature = "full"))]
826     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
827     fn visit_type_macro(&mut self, i: &'ast crate::TypeMacro) {
828         visit_type_macro(self, i);
829     }
830     #[cfg(any(feature = "derive", feature = "full"))]
831     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
832     fn visit_type_never(&mut self, i: &'ast crate::TypeNever) {
833         visit_type_never(self, i);
834     }
835     #[cfg(any(feature = "derive", feature = "full"))]
836     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
837     fn visit_type_param(&mut self, i: &'ast crate::TypeParam) {
838         visit_type_param(self, i);
839     }
840     #[cfg(any(feature = "derive", feature = "full"))]
841     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
842     fn visit_type_param_bound(&mut self, i: &'ast crate::TypeParamBound) {
843         visit_type_param_bound(self, i);
844     }
845     #[cfg(any(feature = "derive", feature = "full"))]
846     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
847     fn visit_type_paren(&mut self, i: &'ast crate::TypeParen) {
848         visit_type_paren(self, i);
849     }
850     #[cfg(any(feature = "derive", feature = "full"))]
851     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
852     fn visit_type_path(&mut self, i: &'ast crate::TypePath) {
853         visit_type_path(self, i);
854     }
855     #[cfg(any(feature = "derive", feature = "full"))]
856     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
857     fn visit_type_ptr(&mut self, i: &'ast crate::TypePtr) {
858         visit_type_ptr(self, i);
859     }
860     #[cfg(any(feature = "derive", feature = "full"))]
861     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
862     fn visit_type_reference(&mut self, i: &'ast crate::TypeReference) {
863         visit_type_reference(self, i);
864     }
865     #[cfg(any(feature = "derive", feature = "full"))]
866     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
867     fn visit_type_slice(&mut self, i: &'ast crate::TypeSlice) {
868         visit_type_slice(self, i);
869     }
870     #[cfg(any(feature = "derive", feature = "full"))]
871     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
872     fn visit_type_trait_object(&mut self, i: &'ast crate::TypeTraitObject) {
873         visit_type_trait_object(self, i);
874     }
875     #[cfg(any(feature = "derive", feature = "full"))]
876     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
877     fn visit_type_tuple(&mut self, i: &'ast crate::TypeTuple) {
878         visit_type_tuple(self, i);
879     }
880     #[cfg(any(feature = "derive", feature = "full"))]
881     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
882     fn visit_un_op(&mut self, i: &'ast crate::UnOp) {
883         visit_un_op(self, i);
884     }
885     #[cfg(feature = "full")]
886     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
887     fn visit_use_glob(&mut self, i: &'ast crate::UseGlob) {
888         visit_use_glob(self, i);
889     }
890     #[cfg(feature = "full")]
891     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
892     fn visit_use_group(&mut self, i: &'ast crate::UseGroup) {
893         visit_use_group(self, i);
894     }
895     #[cfg(feature = "full")]
896     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
897     fn visit_use_name(&mut self, i: &'ast crate::UseName) {
898         visit_use_name(self, i);
899     }
900     #[cfg(feature = "full")]
901     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
902     fn visit_use_path(&mut self, i: &'ast crate::UsePath) {
903         visit_use_path(self, i);
904     }
905     #[cfg(feature = "full")]
906     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
907     fn visit_use_rename(&mut self, i: &'ast crate::UseRename) {
908         visit_use_rename(self, i);
909     }
910     #[cfg(feature = "full")]
911     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
912     fn visit_use_tree(&mut self, i: &'ast crate::UseTree) {
913         visit_use_tree(self, i);
914     }
915     #[cfg(feature = "full")]
916     #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
917     fn visit_variadic(&mut self, i: &'ast crate::Variadic) {
918         visit_variadic(self, i);
919     }
920     #[cfg(any(feature = "derive", feature = "full"))]
921     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
922     fn visit_variant(&mut self, i: &'ast crate::Variant) {
923         visit_variant(self, i);
924     }
925     #[cfg(any(feature = "derive", feature = "full"))]
926     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
927     fn visit_vis_restricted(&mut self, i: &'ast crate::VisRestricted) {
928         visit_vis_restricted(self, i);
929     }
930     #[cfg(any(feature = "derive", feature = "full"))]
931     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
932     fn visit_visibility(&mut self, i: &'ast crate::Visibility) {
933         visit_visibility(self, i);
934     }
935     #[cfg(any(feature = "derive", feature = "full"))]
936     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
937     fn visit_where_clause(&mut self, i: &'ast crate::WhereClause) {
938         visit_where_clause(self, i);
939     }
940     #[cfg(any(feature = "derive", feature = "full"))]
941     #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
942     fn visit_where_predicate(&mut self, i: &'ast crate::WherePredicate) {
943         visit_where_predicate(self, i);
944     }
945 }
946 #[cfg(any(feature = "derive", feature = "full"))]
947 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
948 pub fn visit_abi<'ast, V>(v: &mut V, node: &'ast crate::Abi)
949 where
950     V: Visit<'ast> + ?Sized,
951 {
952     skip!(node.extern_token);
953     if let Some(it) = &node.name {
954         v.visit_lit_str(it);
955     }
956 }
957 #[cfg(any(feature = "derive", feature = "full"))]
958 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
959 pub fn visit_angle_bracketed_generic_arguments<'ast, V>(
960     v: &mut V,
961     node: &'ast crate::AngleBracketedGenericArguments,
962 )
963 where
964     V: Visit<'ast> + ?Sized,
965 {
966     skip!(node.colon2_token);
967     skip!(node.lt_token);
968     for el in Punctuated::pairs(&node.args) {
969         let it = el.value();
970         v.visit_generic_argument(it);
971     }
972     skip!(node.gt_token);
973 }
974 #[cfg(feature = "full")]
975 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
976 pub fn visit_arm<'ast, V>(v: &mut V, node: &'ast crate::Arm)
977 where
978     V: Visit<'ast> + ?Sized,
979 {
980     for it in &node.attrs {
981         v.visit_attribute(it);
982     }
983     v.visit_pat(&node.pat);
984     if let Some(it) = &node.guard {
985         skip!((it).0);
986         v.visit_expr(&*(it).1);
987     }
988     skip!(node.fat_arrow_token);
989     v.visit_expr(&*node.body);
990     skip!(node.comma);
991 }
992 #[cfg(any(feature = "derive", feature = "full"))]
993 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
994 pub fn visit_assoc_const<'ast, V>(v: &mut V, node: &'ast crate::AssocConst)
995 where
996     V: Visit<'ast> + ?Sized,
997 {
998     v.visit_ident(&node.ident);
999     if let Some(it) = &node.generics {
1000         v.visit_angle_bracketed_generic_arguments(it);
1001     }
1002     skip!(node.eq_token);
1003     v.visit_expr(&node.value);
1004 }
1005 #[cfg(any(feature = "derive", feature = "full"))]
1006 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
1007 pub fn visit_assoc_type<'ast, V>(v: &mut V, node: &'ast crate::AssocType)
1008 where
1009     V: Visit<'ast> + ?Sized,
1010 {
1011     v.visit_ident(&node.ident);
1012     if let Some(it) = &node.generics {
1013         v.visit_angle_bracketed_generic_arguments(it);
1014     }
1015     skip!(node.eq_token);
1016     v.visit_type(&node.ty);
1017 }
1018 #[cfg(any(feature = "derive", feature = "full"))]
1019 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
1020 pub fn visit_attr_style<'ast, V>(v: &mut V, node: &'ast crate::AttrStyle)
1021 where
1022     V: Visit<'ast> + ?Sized,
1023 {
1024     match node {
1025         crate::AttrStyle::Outer => {}
1026         crate::AttrStyle::Inner(_binding_0) => {
1027             skip!(_binding_0);
1028         }
1029     }
1030 }
1031 #[cfg(any(feature = "derive", feature = "full"))]
1032 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
1033 pub fn visit_attribute<'ast, V>(v: &mut V, node: &'ast crate::Attribute)
1034 where
1035     V: Visit<'ast> + ?Sized,
1036 {
1037     skip!(node.pound_token);
1038     v.visit_attr_style(&node.style);
1039     skip!(node.bracket_token);
1040     v.visit_meta(&node.meta);
1041 }
1042 #[cfg(any(feature = "derive", feature = "full"))]
1043 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
1044 pub fn visit_bare_fn_arg<'ast, V>(v: &mut V, node: &'ast crate::BareFnArg)
1045 where
1046     V: Visit<'ast> + ?Sized,
1047 {
1048     for it in &node.attrs {
1049         v.visit_attribute(it);
1050     }
1051     if let Some(it) = &node.name {
1052         v.visit_ident(&(it).0);
1053         skip!((it).1);
1054     }
1055     v.visit_type(&node.ty);
1056 }
1057 #[cfg(any(feature = "derive", feature = "full"))]
1058 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
1059 pub fn visit_bare_variadic<'ast, V>(v: &mut V, node: &'ast crate::BareVariadic)
1060 where
1061     V: Visit<'ast> + ?Sized,
1062 {
1063     for it in &node.attrs {
1064         v.visit_attribute(it);
1065     }
1066     if let Some(it) = &node.name {
1067         v.visit_ident(&(it).0);
1068         skip!((it).1);
1069     }
1070     skip!(node.dots);
1071     skip!(node.comma);
1072 }
1073 #[cfg(any(feature = "derive", feature = "full"))]
1074 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
1075 pub fn visit_bin_op<'ast, V>(v: &mut V, node: &'ast crate::BinOp)
1076 where
1077     V: Visit<'ast> + ?Sized,
1078 {
1079     match node {
1080         crate::BinOp::Add(_binding_0) => {
1081             skip!(_binding_0);
1082         }
1083         crate::BinOp::Sub(_binding_0) => {
1084             skip!(_binding_0);
1085         }
1086         crate::BinOp::Mul(_binding_0) => {
1087             skip!(_binding_0);
1088         }
1089         crate::BinOp::Div(_binding_0) => {
1090             skip!(_binding_0);
1091         }
1092         crate::BinOp::Rem(_binding_0) => {
1093             skip!(_binding_0);
1094         }
1095         crate::BinOp::And(_binding_0) => {
1096             skip!(_binding_0);
1097         }
1098         crate::BinOp::Or(_binding_0) => {
1099             skip!(_binding_0);
1100         }
1101         crate::BinOp::BitXor(_binding_0) => {
1102             skip!(_binding_0);
1103         }
1104         crate::BinOp::BitAnd(_binding_0) => {
1105             skip!(_binding_0);
1106         }
1107         crate::BinOp::BitOr(_binding_0) => {
1108             skip!(_binding_0);
1109         }
1110         crate::BinOp::Shl(_binding_0) => {
1111             skip!(_binding_0);
1112         }
1113         crate::BinOp::Shr(_binding_0) => {
1114             skip!(_binding_0);
1115         }
1116         crate::BinOp::Eq(_binding_0) => {
1117             skip!(_binding_0);
1118         }
1119         crate::BinOp::Lt(_binding_0) => {
1120             skip!(_binding_0);
1121         }
1122         crate::BinOp::Le(_binding_0) => {
1123             skip!(_binding_0);
1124         }
1125         crate::BinOp::Ne(_binding_0) => {
1126             skip!(_binding_0);
1127         }
1128         crate::BinOp::Ge(_binding_0) => {
1129             skip!(_binding_0);
1130         }
1131         crate::BinOp::Gt(_binding_0) => {
1132             skip!(_binding_0);
1133         }
1134         crate::BinOp::AddAssign(_binding_0) => {
1135             skip!(_binding_0);
1136         }
1137         crate::BinOp::SubAssign(_binding_0) => {
1138             skip!(_binding_0);
1139         }
1140         crate::BinOp::MulAssign(_binding_0) => {
1141             skip!(_binding_0);
1142         }
1143         crate::BinOp::DivAssign(_binding_0) => {
1144             skip!(_binding_0);
1145         }
1146         crate::BinOp::RemAssign(_binding_0) => {
1147             skip!(_binding_0);
1148         }
1149         crate::BinOp::BitXorAssign(_binding_0) => {
1150             skip!(_binding_0);
1151         }
1152         crate::BinOp::BitAndAssign(_binding_0) => {
1153             skip!(_binding_0);
1154         }
1155         crate::BinOp::BitOrAssign(_binding_0) => {
1156             skip!(_binding_0);
1157         }
1158         crate::BinOp::ShlAssign(_binding_0) => {
1159             skip!(_binding_0);
1160         }
1161         crate::BinOp::ShrAssign(_binding_0) => {
1162             skip!(_binding_0);
1163         }
1164     }
1165 }
1166 #[cfg(feature = "full")]
1167 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
1168 pub fn visit_block<'ast, V>(v: &mut V, node: &'ast crate::Block)
1169 where
1170     V: Visit<'ast> + ?Sized,
1171 {
1172     skip!(node.brace_token);
1173     for it in &node.stmts {
1174         v.visit_stmt(it);
1175     }
1176 }
1177 #[cfg(any(feature = "derive", feature = "full"))]
1178 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
1179 pub fn visit_bound_lifetimes<'ast, V>(v: &mut V, node: &'ast crate::BoundLifetimes)
1180 where
1181     V: Visit<'ast> + ?Sized,
1182 {
1183     skip!(node.for_token);
1184     skip!(node.lt_token);
1185     for el in Punctuated::pairs(&node.lifetimes) {
1186         let it = el.value();
1187         v.visit_generic_param(it);
1188     }
1189     skip!(node.gt_token);
1190 }
1191 #[cfg(feature = "full")]
1192 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
1193 pub fn visit_captured_param<'ast, V>(v: &mut V, node: &'ast crate::CapturedParam)
1194 where
1195     V: Visit<'ast> + ?Sized,
1196 {
1197     match node {
1198         crate::CapturedParam::Lifetime(_binding_0) => {
1199             v.visit_lifetime(_binding_0);
1200         }
1201         crate::CapturedParam::Ident(_binding_0) => {
1202             v.visit_ident(_binding_0);
1203         }
1204     }
1205 }
1206 #[cfg(any(feature = "derive", feature = "full"))]
1207 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
1208 pub fn visit_const_param<'ast, V>(v: &mut V, node: &'ast crate::ConstParam)
1209 where
1210     V: Visit<'ast> + ?Sized,
1211 {
1212     for it in &node.attrs {
1213         v.visit_attribute(it);
1214     }
1215     skip!(node.const_token);
1216     v.visit_ident(&node.ident);
1217     skip!(node.colon_token);
1218     v.visit_type(&node.ty);
1219     skip!(node.eq_token);
1220     if let Some(it) = &node.default {
1221         v.visit_expr(it);
1222     }
1223 }
1224 #[cfg(any(feature = "derive", feature = "full"))]
1225 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
1226 pub fn visit_constraint<'ast, V>(v: &mut V, node: &'ast crate::Constraint)
1227 where
1228     V: Visit<'ast> + ?Sized,
1229 {
1230     v.visit_ident(&node.ident);
1231     if let Some(it) = &node.generics {
1232         v.visit_angle_bracketed_generic_arguments(it);
1233     }
1234     skip!(node.colon_token);
1235     for el in Punctuated::pairs(&node.bounds) {
1236         let it = el.value();
1237         v.visit_type_param_bound(it);
1238     }
1239 }
1240 #[cfg(feature = "derive")]
1241 #[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
1242 pub fn visit_data<'ast, V>(v: &mut V, node: &'ast crate::Data)
1243 where
1244     V: Visit<'ast> + ?Sized,
1245 {
1246     match node {
1247         crate::Data::Struct(_binding_0) => {
1248             v.visit_data_struct(_binding_0);
1249         }
1250         crate::Data::Enum(_binding_0) => {
1251             v.visit_data_enum(_binding_0);
1252         }
1253         crate::Data::Union(_binding_0) => {
1254             v.visit_data_union(_binding_0);
1255         }
1256     }
1257 }
1258 #[cfg(feature = "derive")]
1259 #[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
1260 pub fn visit_data_enum<'ast, V>(v: &mut V, node: &'ast crate::DataEnum)
1261 where
1262     V: Visit<'ast> + ?Sized,
1263 {
1264     skip!(node.enum_token);
1265     skip!(node.brace_token);
1266     for el in Punctuated::pairs(&node.variants) {
1267         let it = el.value();
1268         v.visit_variant(it);
1269     }
1270 }
1271 #[cfg(feature = "derive")]
1272 #[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
1273 pub fn visit_data_struct<'ast, V>(v: &mut V, node: &'ast crate::DataStruct)
1274 where
1275     V: Visit<'ast> + ?Sized,
1276 {
1277     skip!(node.struct_token);
1278     v.visit_fields(&node.fields);
1279     skip!(node.semi_token);
1280 }
1281 #[cfg(feature = "derive")]
1282 #[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
1283 pub fn visit_data_union<'ast, V>(v: &mut V, node: &'ast crate::DataUnion)
1284 where
1285     V: Visit<'ast> + ?Sized,
1286 {
1287     skip!(node.union_token);
1288     v.visit_fields_named(&node.fields);
1289 }
1290 #[cfg(feature = "derive")]
1291 #[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
1292 pub fn visit_derive_input<'ast, V>(v: &mut V, node: &'ast crate::DeriveInput)
1293 where
1294     V: Visit<'ast> + ?Sized,
1295 {
1296     for it in &node.attrs {
1297         v.visit_attribute(it);
1298     }
1299     v.visit_visibility(&node.vis);
1300     v.visit_ident(&node.ident);
1301     v.visit_generics(&node.generics);
1302     v.visit_data(&node.data);
1303 }
1304 #[cfg(any(feature = "derive", feature = "full"))]
1305 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
1306 pub fn visit_expr<'ast, V>(v: &mut V, node: &'ast crate::Expr)
1307 where
1308     V: Visit<'ast> + ?Sized,
1309 {
1310     match node {
1311         crate::Expr::Array(_binding_0) => {
1312             full!(v.visit_expr_array(_binding_0));
1313         }
1314         crate::Expr::Assign(_binding_0) => {
1315             full!(v.visit_expr_assign(_binding_0));
1316         }
1317         crate::Expr::Async(_binding_0) => {
1318             full!(v.visit_expr_async(_binding_0));
1319         }
1320         crate::Expr::Await(_binding_0) => {
1321             full!(v.visit_expr_await(_binding_0));
1322         }
1323         crate::Expr::Binary(_binding_0) => {
1324             v.visit_expr_binary(_binding_0);
1325         }
1326         crate::Expr::Block(_binding_0) => {
1327             full!(v.visit_expr_block(_binding_0));
1328         }
1329         crate::Expr::Break(_binding_0) => {
1330             full!(v.visit_expr_break(_binding_0));
1331         }
1332         crate::Expr::Call(_binding_0) => {
1333             v.visit_expr_call(_binding_0);
1334         }
1335         crate::Expr::Cast(_binding_0) => {
1336             v.visit_expr_cast(_binding_0);
1337         }
1338         crate::Expr::Closure(_binding_0) => {
1339             full!(v.visit_expr_closure(_binding_0));
1340         }
1341         crate::Expr::Const(_binding_0) => {
1342             full!(v.visit_expr_const(_binding_0));
1343         }
1344         crate::Expr::Continue(_binding_0) => {
1345             full!(v.visit_expr_continue(_binding_0));
1346         }
1347         crate::Expr::Field(_binding_0) => {
1348             v.visit_expr_field(_binding_0);
1349         }
1350         crate::Expr::ForLoop(_binding_0) => {
1351             full!(v.visit_expr_for_loop(_binding_0));
1352         }
1353         crate::Expr::Group(_binding_0) => {
1354             v.visit_expr_group(_binding_0);
1355         }
1356         crate::Expr::If(_binding_0) => {
1357             full!(v.visit_expr_if(_binding_0));
1358         }
1359         crate::Expr::Index(_binding_0) => {
1360             v.visit_expr_index(_binding_0);
1361         }
1362         crate::Expr::Infer(_binding_0) => {
1363             full!(v.visit_expr_infer(_binding_0));
1364         }
1365         crate::Expr::Let(_binding_0) => {
1366             full!(v.visit_expr_let(_binding_0));
1367         }
1368         crate::Expr::Lit(_binding_0) => {
1369             v.visit_expr_lit(_binding_0);
1370         }
1371         crate::Expr::Loop(_binding_0) => {
1372             full!(v.visit_expr_loop(_binding_0));
1373         }
1374         crate::Expr::Macro(_binding_0) => {
1375             v.visit_expr_macro(_binding_0);
1376         }
1377         crate::Expr::Match(_binding_0) => {
1378             full!(v.visit_expr_match(_binding_0));
1379         }
1380         crate::Expr::MethodCall(_binding_0) => {
1381             v.visit_expr_method_call(_binding_0);
1382         }
1383         crate::Expr::Paren(_binding_0) => {
1384             v.visit_expr_paren(_binding_0);
1385         }
1386         crate::Expr::Path(_binding_0) => {
1387             v.visit_expr_path(_binding_0);
1388         }
1389         crate::Expr::Range(_binding_0) => {
1390             full!(v.visit_expr_range(_binding_0));
1391         }
1392         crate::Expr::RawAddr(_binding_0) => {
1393             full!(v.visit_expr_raw_addr(_binding_0));
1394         }
1395         crate::Expr::Reference(_binding_0) => {
1396             v.visit_expr_reference(_binding_0);
1397         }
1398         crate::Expr::Repeat(_binding_0) => {
1399             full!(v.visit_expr_repeat(_binding_0));
1400         }
1401         crate::Expr::Return(_binding_0) => {
1402             full!(v.visit_expr_return(_binding_0));
1403         }
1404         crate::Expr::Struct(_binding_0) => {
1405             v.visit_expr_struct(_binding_0);
1406         }
1407         crate::Expr::Try(_binding_0) => {
1408             full!(v.visit_expr_try(_binding_0));
1409         }
1410         crate::Expr::TryBlock(_binding_0) => {
1411             full!(v.visit_expr_try_block(_binding_0));
1412         }
1413         crate::Expr::Tuple(_binding_0) => {
1414             v.visit_expr_tuple(_binding_0);
1415         }
1416         crate::Expr::Unary(_binding_0) => {
1417             v.visit_expr_unary(_binding_0);
1418         }
1419         crate::Expr::Unsafe(_binding_0) => {
1420             full!(v.visit_expr_unsafe(_binding_0));
1421         }
1422         crate::Expr::Verbatim(_binding_0) => {
1423             v.visit_token_stream(_binding_0);
1424         }
1425         crate::Expr::While(_binding_0) => {
1426             full!(v.visit_expr_while(_binding_0));
1427         }
1428         crate::Expr::Yield(_binding_0) => {
1429             full!(v.visit_expr_yield(_binding_0));
1430         }
1431     }
1432 }
1433 #[cfg(feature = "full")]
1434 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
1435 pub fn visit_expr_array<'ast, V>(v: &mut V, node: &'ast crate::ExprArray)
1436 where
1437     V: Visit<'ast> + ?Sized,
1438 {
1439     for it in &node.attrs {
1440         v.visit_attribute(it);
1441     }
1442     skip!(node.bracket_token);
1443     for el in Punctuated::pairs(&node.elems) {
1444         let it = el.value();
1445         v.visit_expr(it);
1446     }
1447 }
1448 #[cfg(feature = "full")]
1449 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
1450 pub fn visit_expr_assign<'ast, V>(v: &mut V, node: &'ast crate::ExprAssign)
1451 where
1452     V: Visit<'ast> + ?Sized,
1453 {
1454     for it in &node.attrs {
1455         v.visit_attribute(it);
1456     }
1457     v.visit_expr(&*node.left);
1458     skip!(node.eq_token);
1459     v.visit_expr(&*node.right);
1460 }
1461 #[cfg(feature = "full")]
1462 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
1463 pub fn visit_expr_async<'ast, V>(v: &mut V, node: &'ast crate::ExprAsync)
1464 where
1465     V: Visit<'ast> + ?Sized,
1466 {
1467     for it in &node.attrs {
1468         v.visit_attribute(it);
1469     }
1470     skip!(node.async_token);
1471     skip!(node.capture);
1472     v.visit_block(&node.block);
1473 }
1474 #[cfg(feature = "full")]
1475 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
1476 pub fn visit_expr_await<'ast, V>(v: &mut V, node: &'ast crate::ExprAwait)
1477 where
1478     V: Visit<'ast> + ?Sized,
1479 {
1480     for it in &node.attrs {
1481         v.visit_attribute(it);
1482     }
1483     v.visit_expr(&*node.base);
1484     skip!(node.dot_token);
1485     skip!(node.await_token);
1486 }
1487 #[cfg(any(feature = "derive", feature = "full"))]
1488 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
1489 pub fn visit_expr_binary<'ast, V>(v: &mut V, node: &'ast crate::ExprBinary)
1490 where
1491     V: Visit<'ast> + ?Sized,
1492 {
1493     for it in &node.attrs {
1494         v.visit_attribute(it);
1495     }
1496     v.visit_expr(&*node.left);
1497     v.visit_bin_op(&node.op);
1498     v.visit_expr(&*node.right);
1499 }
1500 #[cfg(feature = "full")]
1501 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
1502 pub fn visit_expr_block<'ast, V>(v: &mut V, node: &'ast crate::ExprBlock)
1503 where
1504     V: Visit<'ast> + ?Sized,
1505 {
1506     for it in &node.attrs {
1507         v.visit_attribute(it);
1508     }
1509     if let Some(it) = &node.label {
1510         v.visit_label(it);
1511     }
1512     v.visit_block(&node.block);
1513 }
1514 #[cfg(feature = "full")]
1515 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
1516 pub fn visit_expr_break<'ast, V>(v: &mut V, node: &'ast crate::ExprBreak)
1517 where
1518     V: Visit<'ast> + ?Sized,
1519 {
1520     for it in &node.attrs {
1521         v.visit_attribute(it);
1522     }
1523     skip!(node.break_token);
1524     if let Some(it) = &node.label {
1525         v.visit_lifetime(it);
1526     }
1527     if let Some(it) = &node.expr {
1528         v.visit_expr(&**it);
1529     }
1530 }
1531 #[cfg(any(feature = "derive", feature = "full"))]
1532 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
1533 pub fn visit_expr_call<'ast, V>(v: &mut V, node: &'ast crate::ExprCall)
1534 where
1535     V: Visit<'ast> + ?Sized,
1536 {
1537     for it in &node.attrs {
1538         v.visit_attribute(it);
1539     }
1540     v.visit_expr(&*node.func);
1541     skip!(node.paren_token);
1542     for el in Punctuated::pairs(&node.args) {
1543         let it = el.value();
1544         v.visit_expr(it);
1545     }
1546 }
1547 #[cfg(any(feature = "derive", feature = "full"))]
1548 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
1549 pub fn visit_expr_cast<'ast, V>(v: &mut V, node: &'ast crate::ExprCast)
1550 where
1551     V: Visit<'ast> + ?Sized,
1552 {
1553     for it in &node.attrs {
1554         v.visit_attribute(it);
1555     }
1556     v.visit_expr(&*node.expr);
1557     skip!(node.as_token);
1558     v.visit_type(&*node.ty);
1559 }
1560 #[cfg(feature = "full")]
1561 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
1562 pub fn visit_expr_closure<'ast, V>(v: &mut V, node: &'ast crate::ExprClosure)
1563 where
1564     V: Visit<'ast> + ?Sized,
1565 {
1566     for it in &node.attrs {
1567         v.visit_attribute(it);
1568     }
1569     if let Some(it) = &node.lifetimes {
1570         v.visit_bound_lifetimes(it);
1571     }
1572     skip!(node.constness);
1573     skip!(node.movability);
1574     skip!(node.asyncness);
1575     skip!(node.capture);
1576     skip!(node.or1_token);
1577     for el in Punctuated::pairs(&node.inputs) {
1578         let it = el.value();
1579         v.visit_pat(it);
1580     }
1581     skip!(node.or2_token);
1582     v.visit_return_type(&node.output);
1583     v.visit_expr(&*node.body);
1584 }
1585 #[cfg(feature = "full")]
1586 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
1587 pub fn visit_expr_const<'ast, V>(v: &mut V, node: &'ast crate::ExprConst)
1588 where
1589     V: Visit<'ast> + ?Sized,
1590 {
1591     for it in &node.attrs {
1592         v.visit_attribute(it);
1593     }
1594     skip!(node.const_token);
1595     v.visit_block(&node.block);
1596 }
1597 #[cfg(feature = "full")]
1598 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
1599 pub fn visit_expr_continue<'ast, V>(v: &mut V, node: &'ast crate::ExprContinue)
1600 where
1601     V: Visit<'ast> + ?Sized,
1602 {
1603     for it in &node.attrs {
1604         v.visit_attribute(it);
1605     }
1606     skip!(node.continue_token);
1607     if let Some(it) = &node.label {
1608         v.visit_lifetime(it);
1609     }
1610 }
1611 #[cfg(any(feature = "derive", feature = "full"))]
1612 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
1613 pub fn visit_expr_field<'ast, V>(v: &mut V, node: &'ast crate::ExprField)
1614 where
1615     V: Visit<'ast> + ?Sized,
1616 {
1617     for it in &node.attrs {
1618         v.visit_attribute(it);
1619     }
1620     v.visit_expr(&*node.base);
1621     skip!(node.dot_token);
1622     v.visit_member(&node.member);
1623 }
1624 #[cfg(feature = "full")]
1625 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
1626 pub fn visit_expr_for_loop<'ast, V>(v: &mut V, node: &'ast crate::ExprForLoop)
1627 where
1628     V: Visit<'ast> + ?Sized,
1629 {
1630     for it in &node.attrs {
1631         v.visit_attribute(it);
1632     }
1633     if let Some(it) = &node.label {
1634         v.visit_label(it);
1635     }
1636     skip!(node.for_token);
1637     v.visit_pat(&*node.pat);
1638     skip!(node.in_token);
1639     v.visit_expr(&*node.expr);
1640     v.visit_block(&node.body);
1641 }
1642 #[cfg(any(feature = "derive", feature = "full"))]
1643 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
1644 pub fn visit_expr_group<'ast, V>(v: &mut V, node: &'ast crate::ExprGroup)
1645 where
1646     V: Visit<'ast> + ?Sized,
1647 {
1648     for it in &node.attrs {
1649         v.visit_attribute(it);
1650     }
1651     skip!(node.group_token);
1652     v.visit_expr(&*node.expr);
1653 }
1654 #[cfg(feature = "full")]
1655 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
1656 pub fn visit_expr_if<'ast, V>(v: &mut V, node: &'ast crate::ExprIf)
1657 where
1658     V: Visit<'ast> + ?Sized,
1659 {
1660     for it in &node.attrs {
1661         v.visit_attribute(it);
1662     }
1663     skip!(node.if_token);
1664     v.visit_expr(&*node.cond);
1665     v.visit_block(&node.then_branch);
1666     if let Some(it) = &node.else_branch {
1667         skip!((it).0);
1668         v.visit_expr(&*(it).1);
1669     }
1670 }
1671 #[cfg(any(feature = "derive", feature = "full"))]
1672 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
1673 pub fn visit_expr_index<'ast, V>(v: &mut V, node: &'ast crate::ExprIndex)
1674 where
1675     V: Visit<'ast> + ?Sized,
1676 {
1677     for it in &node.attrs {
1678         v.visit_attribute(it);
1679     }
1680     v.visit_expr(&*node.expr);
1681     skip!(node.bracket_token);
1682     v.visit_expr(&*node.index);
1683 }
1684 #[cfg(feature = "full")]
1685 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
1686 pub fn visit_expr_infer<'ast, V>(v: &mut V, node: &'ast crate::ExprInfer)
1687 where
1688     V: Visit<'ast> + ?Sized,
1689 {
1690     for it in &node.attrs {
1691         v.visit_attribute(it);
1692     }
1693     skip!(node.underscore_token);
1694 }
1695 #[cfg(feature = "full")]
1696 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
1697 pub fn visit_expr_let<'ast, V>(v: &mut V, node: &'ast crate::ExprLet)
1698 where
1699     V: Visit<'ast> + ?Sized,
1700 {
1701     for it in &node.attrs {
1702         v.visit_attribute(it);
1703     }
1704     skip!(node.let_token);
1705     v.visit_pat(&*node.pat);
1706     skip!(node.eq_token);
1707     v.visit_expr(&*node.expr);
1708 }
1709 #[cfg(any(feature = "derive", feature = "full"))]
1710 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
1711 pub fn visit_expr_lit<'ast, V>(v: &mut V, node: &'ast crate::ExprLit)
1712 where
1713     V: Visit<'ast> + ?Sized,
1714 {
1715     for it in &node.attrs {
1716         v.visit_attribute(it);
1717     }
1718     v.visit_lit(&node.lit);
1719 }
1720 #[cfg(feature = "full")]
1721 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
1722 pub fn visit_expr_loop<'ast, V>(v: &mut V, node: &'ast crate::ExprLoop)
1723 where
1724     V: Visit<'ast> + ?Sized,
1725 {
1726     for it in &node.attrs {
1727         v.visit_attribute(it);
1728     }
1729     if let Some(it) = &node.label {
1730         v.visit_label(it);
1731     }
1732     skip!(node.loop_token);
1733     v.visit_block(&node.body);
1734 }
1735 #[cfg(any(feature = "derive", feature = "full"))]
1736 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
1737 pub fn visit_expr_macro<'ast, V>(v: &mut V, node: &'ast crate::ExprMacro)
1738 where
1739     V: Visit<'ast> + ?Sized,
1740 {
1741     for it in &node.attrs {
1742         v.visit_attribute(it);
1743     }
1744     v.visit_macro(&node.mac);
1745 }
1746 #[cfg(feature = "full")]
1747 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
1748 pub fn visit_expr_match<'ast, V>(v: &mut V, node: &'ast crate::ExprMatch)
1749 where
1750     V: Visit<'ast> + ?Sized,
1751 {
1752     for it in &node.attrs {
1753         v.visit_attribute(it);
1754     }
1755     skip!(node.match_token);
1756     v.visit_expr(&*node.expr);
1757     skip!(node.brace_token);
1758     for it in &node.arms {
1759         v.visit_arm(it);
1760     }
1761 }
1762 #[cfg(any(feature = "derive", feature = "full"))]
1763 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
1764 pub fn visit_expr_method_call<'ast, V>(v: &mut V, node: &'ast crate::ExprMethodCall)
1765 where
1766     V: Visit<'ast> + ?Sized,
1767 {
1768     for it in &node.attrs {
1769         v.visit_attribute(it);
1770     }
1771     v.visit_expr(&*node.receiver);
1772     skip!(node.dot_token);
1773     v.visit_ident(&node.method);
1774     if let Some(it) = &node.turbofish {
1775         v.visit_angle_bracketed_generic_arguments(it);
1776     }
1777     skip!(node.paren_token);
1778     for el in Punctuated::pairs(&node.args) {
1779         let it = el.value();
1780         v.visit_expr(it);
1781     }
1782 }
1783 #[cfg(any(feature = "derive", feature = "full"))]
1784 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
1785 pub fn visit_expr_paren<'ast, V>(v: &mut V, node: &'ast crate::ExprParen)
1786 where
1787     V: Visit<'ast> + ?Sized,
1788 {
1789     for it in &node.attrs {
1790         v.visit_attribute(it);
1791     }
1792     skip!(node.paren_token);
1793     v.visit_expr(&*node.expr);
1794 }
1795 #[cfg(any(feature = "derive", feature = "full"))]
1796 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
1797 pub fn visit_expr_path<'ast, V>(v: &mut V, node: &'ast crate::ExprPath)
1798 where
1799     V: Visit<'ast> + ?Sized,
1800 {
1801     for it in &node.attrs {
1802         v.visit_attribute(it);
1803     }
1804     if let Some(it) = &node.qself {
1805         v.visit_qself(it);
1806     }
1807     v.visit_path(&node.path);
1808 }
1809 #[cfg(feature = "full")]
1810 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
1811 pub fn visit_expr_range<'ast, V>(v: &mut V, node: &'ast crate::ExprRange)
1812 where
1813     V: Visit<'ast> + ?Sized,
1814 {
1815     for it in &node.attrs {
1816         v.visit_attribute(it);
1817     }
1818     if let Some(it) = &node.start {
1819         v.visit_expr(&**it);
1820     }
1821     v.visit_range_limits(&node.limits);
1822     if let Some(it) = &node.end {
1823         v.visit_expr(&**it);
1824     }
1825 }
1826 #[cfg(feature = "full")]
1827 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
1828 pub fn visit_expr_raw_addr<'ast, V>(v: &mut V, node: &'ast crate::ExprRawAddr)
1829 where
1830     V: Visit<'ast> + ?Sized,
1831 {
1832     for it in &node.attrs {
1833         v.visit_attribute(it);
1834     }
1835     skip!(node.and_token);
1836     skip!(node.raw);
1837     v.visit_pointer_mutability(&node.mutability);
1838     v.visit_expr(&*node.expr);
1839 }
1840 #[cfg(any(feature = "derive", feature = "full"))]
1841 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
1842 pub fn visit_expr_reference<'ast, V>(v: &mut V, node: &'ast crate::ExprReference)
1843 where
1844     V: Visit<'ast> + ?Sized,
1845 {
1846     for it in &node.attrs {
1847         v.visit_attribute(it);
1848     }
1849     skip!(node.and_token);
1850     skip!(node.mutability);
1851     v.visit_expr(&*node.expr);
1852 }
1853 #[cfg(feature = "full")]
1854 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
1855 pub fn visit_expr_repeat<'ast, V>(v: &mut V, node: &'ast crate::ExprRepeat)
1856 where
1857     V: Visit<'ast> + ?Sized,
1858 {
1859     for it in &node.attrs {
1860         v.visit_attribute(it);
1861     }
1862     skip!(node.bracket_token);
1863     v.visit_expr(&*node.expr);
1864     skip!(node.semi_token);
1865     v.visit_expr(&*node.len);
1866 }
1867 #[cfg(feature = "full")]
1868 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
1869 pub fn visit_expr_return<'ast, V>(v: &mut V, node: &'ast crate::ExprReturn)
1870 where
1871     V: Visit<'ast> + ?Sized,
1872 {
1873     for it in &node.attrs {
1874         v.visit_attribute(it);
1875     }
1876     skip!(node.return_token);
1877     if let Some(it) = &node.expr {
1878         v.visit_expr(&**it);
1879     }
1880 }
1881 #[cfg(any(feature = "derive", feature = "full"))]
1882 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
1883 pub fn visit_expr_struct<'ast, V>(v: &mut V, node: &'ast crate::ExprStruct)
1884 where
1885     V: Visit<'ast> + ?Sized,
1886 {
1887     for it in &node.attrs {
1888         v.visit_attribute(it);
1889     }
1890     if let Some(it) = &node.qself {
1891         v.visit_qself(it);
1892     }
1893     v.visit_path(&node.path);
1894     skip!(node.brace_token);
1895     for el in Punctuated::pairs(&node.fields) {
1896         let it = el.value();
1897         v.visit_field_value(it);
1898     }
1899     skip!(node.dot2_token);
1900     if let Some(it) = &node.rest {
1901         v.visit_expr(&**it);
1902     }
1903 }
1904 #[cfg(feature = "full")]
1905 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
1906 pub fn visit_expr_try<'ast, V>(v: &mut V, node: &'ast crate::ExprTry)
1907 where
1908     V: Visit<'ast> + ?Sized,
1909 {
1910     for it in &node.attrs {
1911         v.visit_attribute(it);
1912     }
1913     v.visit_expr(&*node.expr);
1914     skip!(node.question_token);
1915 }
1916 #[cfg(feature = "full")]
1917 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
1918 pub fn visit_expr_try_block<'ast, V>(v: &mut V, node: &'ast crate::ExprTryBlock)
1919 where
1920     V: Visit<'ast> + ?Sized,
1921 {
1922     for it in &node.attrs {
1923         v.visit_attribute(it);
1924     }
1925     skip!(node.try_token);
1926     v.visit_block(&node.block);
1927 }
1928 #[cfg(any(feature = "derive", feature = "full"))]
1929 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
1930 pub fn visit_expr_tuple<'ast, V>(v: &mut V, node: &'ast crate::ExprTuple)
1931 where
1932     V: Visit<'ast> + ?Sized,
1933 {
1934     for it in &node.attrs {
1935         v.visit_attribute(it);
1936     }
1937     skip!(node.paren_token);
1938     for el in Punctuated::pairs(&node.elems) {
1939         let it = el.value();
1940         v.visit_expr(it);
1941     }
1942 }
1943 #[cfg(any(feature = "derive", feature = "full"))]
1944 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
1945 pub fn visit_expr_unary<'ast, V>(v: &mut V, node: &'ast crate::ExprUnary)
1946 where
1947     V: Visit<'ast> + ?Sized,
1948 {
1949     for it in &node.attrs {
1950         v.visit_attribute(it);
1951     }
1952     v.visit_un_op(&node.op);
1953     v.visit_expr(&*node.expr);
1954 }
1955 #[cfg(feature = "full")]
1956 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
1957 pub fn visit_expr_unsafe<'ast, V>(v: &mut V, node: &'ast crate::ExprUnsafe)
1958 where
1959     V: Visit<'ast> + ?Sized,
1960 {
1961     for it in &node.attrs {
1962         v.visit_attribute(it);
1963     }
1964     skip!(node.unsafe_token);
1965     v.visit_block(&node.block);
1966 }
1967 #[cfg(feature = "full")]
1968 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
1969 pub fn visit_expr_while<'ast, V>(v: &mut V, node: &'ast crate::ExprWhile)
1970 where
1971     V: Visit<'ast> + ?Sized,
1972 {
1973     for it in &node.attrs {
1974         v.visit_attribute(it);
1975     }
1976     if let Some(it) = &node.label {
1977         v.visit_label(it);
1978     }
1979     skip!(node.while_token);
1980     v.visit_expr(&*node.cond);
1981     v.visit_block(&node.body);
1982 }
1983 #[cfg(feature = "full")]
1984 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
1985 pub fn visit_expr_yield<'ast, V>(v: &mut V, node: &'ast crate::ExprYield)
1986 where
1987     V: Visit<'ast> + ?Sized,
1988 {
1989     for it in &node.attrs {
1990         v.visit_attribute(it);
1991     }
1992     skip!(node.yield_token);
1993     if let Some(it) = &node.expr {
1994         v.visit_expr(&**it);
1995     }
1996 }
1997 #[cfg(any(feature = "derive", feature = "full"))]
1998 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
1999 pub fn visit_field<'ast, V>(v: &mut V, node: &'ast crate::Field)
2000 where
2001     V: Visit<'ast> + ?Sized,
2002 {
2003     for it in &node.attrs {
2004         v.visit_attribute(it);
2005     }
2006     v.visit_visibility(&node.vis);
2007     v.visit_field_mutability(&node.mutability);
2008     if let Some(it) = &node.ident {
2009         v.visit_ident(it);
2010     }
2011     skip!(node.colon_token);
2012     v.visit_type(&node.ty);
2013 }
2014 #[cfg(any(feature = "derive", feature = "full"))]
2015 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
2016 pub fn visit_field_mutability<'ast, V>(v: &mut V, node: &'ast crate::FieldMutability)
2017 where
2018     V: Visit<'ast> + ?Sized,
2019 {
2020     match node {
2021         crate::FieldMutability::None => {}
2022     }
2023 }
2024 #[cfg(feature = "full")]
2025 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
2026 pub fn visit_field_pat<'ast, V>(v: &mut V, node: &'ast crate::FieldPat)
2027 where
2028     V: Visit<'ast> + ?Sized,
2029 {
2030     for it in &node.attrs {
2031         v.visit_attribute(it);
2032     }
2033     v.visit_member(&node.member);
2034     skip!(node.colon_token);
2035     v.visit_pat(&*node.pat);
2036 }
2037 #[cfg(any(feature = "derive", feature = "full"))]
2038 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
2039 pub fn visit_field_value<'ast, V>(v: &mut V, node: &'ast crate::FieldValue)
2040 where
2041     V: Visit<'ast> + ?Sized,
2042 {
2043     for it in &node.attrs {
2044         v.visit_attribute(it);
2045     }
2046     v.visit_member(&node.member);
2047     skip!(node.colon_token);
2048     v.visit_expr(&node.expr);
2049 }
2050 #[cfg(any(feature = "derive", feature = "full"))]
2051 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
2052 pub fn visit_fields<'ast, V>(v: &mut V, node: &'ast crate::Fields)
2053 where
2054     V: Visit<'ast> + ?Sized,
2055 {
2056     match node {
2057         crate::Fields::Named(_binding_0) => {
2058             v.visit_fields_named(_binding_0);
2059         }
2060         crate::Fields::Unnamed(_binding_0) => {
2061             v.visit_fields_unnamed(_binding_0);
2062         }
2063         crate::Fields::Unit => {}
2064     }
2065 }
2066 #[cfg(any(feature = "derive", feature = "full"))]
2067 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
2068 pub fn visit_fields_named<'ast, V>(v: &mut V, node: &'ast crate::FieldsNamed)
2069 where
2070     V: Visit<'ast> + ?Sized,
2071 {
2072     skip!(node.brace_token);
2073     for el in Punctuated::pairs(&node.named) {
2074         let it = el.value();
2075         v.visit_field(it);
2076     }
2077 }
2078 #[cfg(any(feature = "derive", feature = "full"))]
2079 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
2080 pub fn visit_fields_unnamed<'ast, V>(v: &mut V, node: &'ast crate::FieldsUnnamed)
2081 where
2082     V: Visit<'ast> + ?Sized,
2083 {
2084     skip!(node.paren_token);
2085     for el in Punctuated::pairs(&node.unnamed) {
2086         let it = el.value();
2087         v.visit_field(it);
2088     }
2089 }
2090 #[cfg(feature = "full")]
2091 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
2092 pub fn visit_file<'ast, V>(v: &mut V, node: &'ast crate::File)
2093 where
2094     V: Visit<'ast> + ?Sized,
2095 {
2096     skip!(node.shebang);
2097     for it in &node.attrs {
2098         v.visit_attribute(it);
2099     }
2100     for it in &node.items {
2101         v.visit_item(it);
2102     }
2103 }
2104 #[cfg(feature = "full")]
2105 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
2106 pub fn visit_fn_arg<'ast, V>(v: &mut V, node: &'ast crate::FnArg)
2107 where
2108     V: Visit<'ast> + ?Sized,
2109 {
2110     match node {
2111         crate::FnArg::Receiver(_binding_0) => {
2112             v.visit_receiver(_binding_0);
2113         }
2114         crate::FnArg::Typed(_binding_0) => {
2115             v.visit_pat_type(_binding_0);
2116         }
2117     }
2118 }
2119 #[cfg(feature = "full")]
2120 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
2121 pub fn visit_foreign_item<'ast, V>(v: &mut V, node: &'ast crate::ForeignItem)
2122 where
2123     V: Visit<'ast> + ?Sized,
2124 {
2125     match node {
2126         crate::ForeignItem::Fn(_binding_0) => {
2127             v.visit_foreign_item_fn(_binding_0);
2128         }
2129         crate::ForeignItem::Static(_binding_0) => {
2130             v.visit_foreign_item_static(_binding_0);
2131         }
2132         crate::ForeignItem::Type(_binding_0) => {
2133             v.visit_foreign_item_type(_binding_0);
2134         }
2135         crate::ForeignItem::Macro(_binding_0) => {
2136             v.visit_foreign_item_macro(_binding_0);
2137         }
2138         crate::ForeignItem::Verbatim(_binding_0) => {
2139             v.visit_token_stream(_binding_0);
2140         }
2141     }
2142 }
2143 #[cfg(feature = "full")]
2144 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
2145 pub fn visit_foreign_item_fn<'ast, V>(v: &mut V, node: &'ast crate::ForeignItemFn)
2146 where
2147     V: Visit<'ast> + ?Sized,
2148 {
2149     for it in &node.attrs {
2150         v.visit_attribute(it);
2151     }
2152     v.visit_visibility(&node.vis);
2153     v.visit_signature(&node.sig);
2154     skip!(node.semi_token);
2155 }
2156 #[cfg(feature = "full")]
2157 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
2158 pub fn visit_foreign_item_macro<'ast, V>(v: &mut V, node: &'ast crate::ForeignItemMacro)
2159 where
2160     V: Visit<'ast> + ?Sized,
2161 {
2162     for it in &node.attrs {
2163         v.visit_attribute(it);
2164     }
2165     v.visit_macro(&node.mac);
2166     skip!(node.semi_token);
2167 }
2168 #[cfg(feature = "full")]
2169 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
2170 pub fn visit_foreign_item_static<'ast, V>(
2171     v: &mut V,
2172     node: &'ast crate::ForeignItemStatic,
2173 )
2174 where
2175     V: Visit<'ast> + ?Sized,
2176 {
2177     for it in &node.attrs {
2178         v.visit_attribute(it);
2179     }
2180     v.visit_visibility(&node.vis);
2181     skip!(node.static_token);
2182     v.visit_static_mutability(&node.mutability);
2183     v.visit_ident(&node.ident);
2184     skip!(node.colon_token);
2185     v.visit_type(&*node.ty);
2186     skip!(node.semi_token);
2187 }
2188 #[cfg(feature = "full")]
2189 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
2190 pub fn visit_foreign_item_type<'ast, V>(v: &mut V, node: &'ast crate::ForeignItemType)
2191 where
2192     V: Visit<'ast> + ?Sized,
2193 {
2194     for it in &node.attrs {
2195         v.visit_attribute(it);
2196     }
2197     v.visit_visibility(&node.vis);
2198     skip!(node.type_token);
2199     v.visit_ident(&node.ident);
2200     v.visit_generics(&node.generics);
2201     skip!(node.semi_token);
2202 }
2203 #[cfg(any(feature = "derive", feature = "full"))]
2204 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
2205 pub fn visit_generic_argument<'ast, V>(v: &mut V, node: &'ast crate::GenericArgument)
2206 where
2207     V: Visit<'ast> + ?Sized,
2208 {
2209     match node {
2210         crate::GenericArgument::Lifetime(_binding_0) => {
2211             v.visit_lifetime(_binding_0);
2212         }
2213         crate::GenericArgument::Type(_binding_0) => {
2214             v.visit_type(_binding_0);
2215         }
2216         crate::GenericArgument::Const(_binding_0) => {
2217             v.visit_expr(_binding_0);
2218         }
2219         crate::GenericArgument::AssocType(_binding_0) => {
2220             v.visit_assoc_type(_binding_0);
2221         }
2222         crate::GenericArgument::AssocConst(_binding_0) => {
2223             v.visit_assoc_const(_binding_0);
2224         }
2225         crate::GenericArgument::Constraint(_binding_0) => {
2226             v.visit_constraint(_binding_0);
2227         }
2228     }
2229 }
2230 #[cfg(any(feature = "derive", feature = "full"))]
2231 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
2232 pub fn visit_generic_param<'ast, V>(v: &mut V, node: &'ast crate::GenericParam)
2233 where
2234     V: Visit<'ast> + ?Sized,
2235 {
2236     match node {
2237         crate::GenericParam::Lifetime(_binding_0) => {
2238             v.visit_lifetime_param(_binding_0);
2239         }
2240         crate::GenericParam::Type(_binding_0) => {
2241             v.visit_type_param(_binding_0);
2242         }
2243         crate::GenericParam::Const(_binding_0) => {
2244             v.visit_const_param(_binding_0);
2245         }
2246     }
2247 }
2248 #[cfg(any(feature = "derive", feature = "full"))]
2249 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
2250 pub fn visit_generics<'ast, V>(v: &mut V, node: &'ast crate::Generics)
2251 where
2252     V: Visit<'ast> + ?Sized,
2253 {
2254     skip!(node.lt_token);
2255     for el in Punctuated::pairs(&node.params) {
2256         let it = el.value();
2257         v.visit_generic_param(it);
2258     }
2259     skip!(node.gt_token);
2260     if let Some(it) = &node.where_clause {
2261         v.visit_where_clause(it);
2262     }
2263 }
2264 pub fn visit_ident<'ast, V>(v: &mut V, node: &'ast proc_macro2::Ident)
2265 where
2266     V: Visit<'ast> + ?Sized,
2267 {
2268     v.visit_span(&node.span());
2269 }
2270 #[cfg(feature = "full")]
2271 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
2272 pub fn visit_impl_item<'ast, V>(v: &mut V, node: &'ast crate::ImplItem)
2273 where
2274     V: Visit<'ast> + ?Sized,
2275 {
2276     match node {
2277         crate::ImplItem::Const(_binding_0) => {
2278             v.visit_impl_item_const(_binding_0);
2279         }
2280         crate::ImplItem::Fn(_binding_0) => {
2281             v.visit_impl_item_fn(_binding_0);
2282         }
2283         crate::ImplItem::Type(_binding_0) => {
2284             v.visit_impl_item_type(_binding_0);
2285         }
2286         crate::ImplItem::Macro(_binding_0) => {
2287             v.visit_impl_item_macro(_binding_0);
2288         }
2289         crate::ImplItem::Verbatim(_binding_0) => {
2290             v.visit_token_stream(_binding_0);
2291         }
2292     }
2293 }
2294 #[cfg(feature = "full")]
2295 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
2296 pub fn visit_impl_item_const<'ast, V>(v: &mut V, node: &'ast crate::ImplItemConst)
2297 where
2298     V: Visit<'ast> + ?Sized,
2299 {
2300     for it in &node.attrs {
2301         v.visit_attribute(it);
2302     }
2303     v.visit_visibility(&node.vis);
2304     skip!(node.defaultness);
2305     skip!(node.const_token);
2306     v.visit_ident(&node.ident);
2307     v.visit_generics(&node.generics);
2308     skip!(node.colon_token);
2309     v.visit_type(&node.ty);
2310     skip!(node.eq_token);
2311     v.visit_expr(&node.expr);
2312     skip!(node.semi_token);
2313 }
2314 #[cfg(feature = "full")]
2315 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
2316 pub fn visit_impl_item_fn<'ast, V>(v: &mut V, node: &'ast crate::ImplItemFn)
2317 where
2318     V: Visit<'ast> + ?Sized,
2319 {
2320     for it in &node.attrs {
2321         v.visit_attribute(it);
2322     }
2323     v.visit_visibility(&node.vis);
2324     skip!(node.defaultness);
2325     v.visit_signature(&node.sig);
2326     v.visit_block(&node.block);
2327 }
2328 #[cfg(feature = "full")]
2329 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
2330 pub fn visit_impl_item_macro<'ast, V>(v: &mut V, node: &'ast crate::ImplItemMacro)
2331 where
2332     V: Visit<'ast> + ?Sized,
2333 {
2334     for it in &node.attrs {
2335         v.visit_attribute(it);
2336     }
2337     v.visit_macro(&node.mac);
2338     skip!(node.semi_token);
2339 }
2340 #[cfg(feature = "full")]
2341 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
2342 pub fn visit_impl_item_type<'ast, V>(v: &mut V, node: &'ast crate::ImplItemType)
2343 where
2344     V: Visit<'ast> + ?Sized,
2345 {
2346     for it in &node.attrs {
2347         v.visit_attribute(it);
2348     }
2349     v.visit_visibility(&node.vis);
2350     skip!(node.defaultness);
2351     skip!(node.type_token);
2352     v.visit_ident(&node.ident);
2353     v.visit_generics(&node.generics);
2354     skip!(node.eq_token);
2355     v.visit_type(&node.ty);
2356     skip!(node.semi_token);
2357 }
2358 #[cfg(feature = "full")]
2359 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
2360 pub fn visit_impl_restriction<'ast, V>(v: &mut V, node: &'ast crate::ImplRestriction)
2361 where
2362     V: Visit<'ast> + ?Sized,
2363 {
2364     match *node {}
2365 }
2366 #[cfg(any(feature = "derive", feature = "full"))]
2367 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
2368 pub fn visit_index<'ast, V>(v: &mut V, node: &'ast crate::Index)
2369 where
2370     V: Visit<'ast> + ?Sized,
2371 {
2372     skip!(node.index);
2373     v.visit_span(&node.span);
2374 }
2375 #[cfg(feature = "full")]
2376 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
2377 pub fn visit_item<'ast, V>(v: &mut V, node: &'ast crate::Item)
2378 where
2379     V: Visit<'ast> + ?Sized,
2380 {
2381     match node {
2382         crate::Item::Const(_binding_0) => {
2383             v.visit_item_const(_binding_0);
2384         }
2385         crate::Item::Enum(_binding_0) => {
2386             v.visit_item_enum(_binding_0);
2387         }
2388         crate::Item::ExternCrate(_binding_0) => {
2389             v.visit_item_extern_crate(_binding_0);
2390         }
2391         crate::Item::Fn(_binding_0) => {
2392             v.visit_item_fn(_binding_0);
2393         }
2394         crate::Item::ForeignMod(_binding_0) => {
2395             v.visit_item_foreign_mod(_binding_0);
2396         }
2397         crate::Item::Impl(_binding_0) => {
2398             v.visit_item_impl(_binding_0);
2399         }
2400         crate::Item::Macro(_binding_0) => {
2401             v.visit_item_macro(_binding_0);
2402         }
2403         crate::Item::Mod(_binding_0) => {
2404             v.visit_item_mod(_binding_0);
2405         }
2406         crate::Item::Static(_binding_0) => {
2407             v.visit_item_static(_binding_0);
2408         }
2409         crate::Item::Struct(_binding_0) => {
2410             v.visit_item_struct(_binding_0);
2411         }
2412         crate::Item::Trait(_binding_0) => {
2413             v.visit_item_trait(_binding_0);
2414         }
2415         crate::Item::TraitAlias(_binding_0) => {
2416             v.visit_item_trait_alias(_binding_0);
2417         }
2418         crate::Item::Type(_binding_0) => {
2419             v.visit_item_type(_binding_0);
2420         }
2421         crate::Item::Union(_binding_0) => {
2422             v.visit_item_union(_binding_0);
2423         }
2424         crate::Item::Use(_binding_0) => {
2425             v.visit_item_use(_binding_0);
2426         }
2427         crate::Item::Verbatim(_binding_0) => {
2428             v.visit_token_stream(_binding_0);
2429         }
2430     }
2431 }
2432 #[cfg(feature = "full")]
2433 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
2434 pub fn visit_item_const<'ast, V>(v: &mut V, node: &'ast crate::ItemConst)
2435 where
2436     V: Visit<'ast> + ?Sized,
2437 {
2438     for it in &node.attrs {
2439         v.visit_attribute(it);
2440     }
2441     v.visit_visibility(&node.vis);
2442     skip!(node.const_token);
2443     v.visit_ident(&node.ident);
2444     v.visit_generics(&node.generics);
2445     skip!(node.colon_token);
2446     v.visit_type(&*node.ty);
2447     skip!(node.eq_token);
2448     v.visit_expr(&*node.expr);
2449     skip!(node.semi_token);
2450 }
2451 #[cfg(feature = "full")]
2452 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
2453 pub fn visit_item_enum<'ast, V>(v: &mut V, node: &'ast crate::ItemEnum)
2454 where
2455     V: Visit<'ast> + ?Sized,
2456 {
2457     for it in &node.attrs {
2458         v.visit_attribute(it);
2459     }
2460     v.visit_visibility(&node.vis);
2461     skip!(node.enum_token);
2462     v.visit_ident(&node.ident);
2463     v.visit_generics(&node.generics);
2464     skip!(node.brace_token);
2465     for el in Punctuated::pairs(&node.variants) {
2466         let it = el.value();
2467         v.visit_variant(it);
2468     }
2469 }
2470 #[cfg(feature = "full")]
2471 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
2472 pub fn visit_item_extern_crate<'ast, V>(v: &mut V, node: &'ast crate::ItemExternCrate)
2473 where
2474     V: Visit<'ast> + ?Sized,
2475 {
2476     for it in &node.attrs {
2477         v.visit_attribute(it);
2478     }
2479     v.visit_visibility(&node.vis);
2480     skip!(node.extern_token);
2481     skip!(node.crate_token);
2482     v.visit_ident(&node.ident);
2483     if let Some(it) = &node.rename {
2484         skip!((it).0);
2485         v.visit_ident(&(it).1);
2486     }
2487     skip!(node.semi_token);
2488 }
2489 #[cfg(feature = "full")]
2490 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
2491 pub fn visit_item_fn<'ast, V>(v: &mut V, node: &'ast crate::ItemFn)
2492 where
2493     V: Visit<'ast> + ?Sized,
2494 {
2495     for it in &node.attrs {
2496         v.visit_attribute(it);
2497     }
2498     v.visit_visibility(&node.vis);
2499     v.visit_signature(&node.sig);
2500     v.visit_block(&*node.block);
2501 }
2502 #[cfg(feature = "full")]
2503 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
2504 pub fn visit_item_foreign_mod<'ast, V>(v: &mut V, node: &'ast crate::ItemForeignMod)
2505 where
2506     V: Visit<'ast> + ?Sized,
2507 {
2508     for it in &node.attrs {
2509         v.visit_attribute(it);
2510     }
2511     skip!(node.unsafety);
2512     v.visit_abi(&node.abi);
2513     skip!(node.brace_token);
2514     for it in &node.items {
2515         v.visit_foreign_item(it);
2516     }
2517 }
2518 #[cfg(feature = "full")]
2519 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
2520 pub fn visit_item_impl<'ast, V>(v: &mut V, node: &'ast crate::ItemImpl)
2521 where
2522     V: Visit<'ast> + ?Sized,
2523 {
2524     for it in &node.attrs {
2525         v.visit_attribute(it);
2526     }
2527     skip!(node.defaultness);
2528     skip!(node.unsafety);
2529     skip!(node.impl_token);
2530     v.visit_generics(&node.generics);
2531     if let Some(it) = &node.trait_ {
2532         skip!((it).0);
2533         v.visit_path(&(it).1);
2534         skip!((it).2);
2535     }
2536     v.visit_type(&*node.self_ty);
2537     skip!(node.brace_token);
2538     for it in &node.items {
2539         v.visit_impl_item(it);
2540     }
2541 }
2542 #[cfg(feature = "full")]
2543 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
2544 pub fn visit_item_macro<'ast, V>(v: &mut V, node: &'ast crate::ItemMacro)
2545 where
2546     V: Visit<'ast> + ?Sized,
2547 {
2548     for it in &node.attrs {
2549         v.visit_attribute(it);
2550     }
2551     if let Some(it) = &node.ident {
2552         v.visit_ident(it);
2553     }
2554     v.visit_macro(&node.mac);
2555     skip!(node.semi_token);
2556 }
2557 #[cfg(feature = "full")]
2558 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
2559 pub fn visit_item_mod<'ast, V>(v: &mut V, node: &'ast crate::ItemMod)
2560 where
2561     V: Visit<'ast> + ?Sized,
2562 {
2563     for it in &node.attrs {
2564         v.visit_attribute(it);
2565     }
2566     v.visit_visibility(&node.vis);
2567     skip!(node.unsafety);
2568     skip!(node.mod_token);
2569     v.visit_ident(&node.ident);
2570     if let Some(it) = &node.content {
2571         skip!((it).0);
2572         for it in &(it).1 {
2573             v.visit_item(it);
2574         }
2575     }
2576     skip!(node.semi);
2577 }
2578 #[cfg(feature = "full")]
2579 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
2580 pub fn visit_item_static<'ast, V>(v: &mut V, node: &'ast crate::ItemStatic)
2581 where
2582     V: Visit<'ast> + ?Sized,
2583 {
2584     for it in &node.attrs {
2585         v.visit_attribute(it);
2586     }
2587     v.visit_visibility(&node.vis);
2588     skip!(node.static_token);
2589     v.visit_static_mutability(&node.mutability);
2590     v.visit_ident(&node.ident);
2591     skip!(node.colon_token);
2592     v.visit_type(&*node.ty);
2593     skip!(node.eq_token);
2594     v.visit_expr(&*node.expr);
2595     skip!(node.semi_token);
2596 }
2597 #[cfg(feature = "full")]
2598 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
2599 pub fn visit_item_struct<'ast, V>(v: &mut V, node: &'ast crate::ItemStruct)
2600 where
2601     V: Visit<'ast> + ?Sized,
2602 {
2603     for it in &node.attrs {
2604         v.visit_attribute(it);
2605     }
2606     v.visit_visibility(&node.vis);
2607     skip!(node.struct_token);
2608     v.visit_ident(&node.ident);
2609     v.visit_generics(&node.generics);
2610     v.visit_fields(&node.fields);
2611     skip!(node.semi_token);
2612 }
2613 #[cfg(feature = "full")]
2614 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
2615 pub fn visit_item_trait<'ast, V>(v: &mut V, node: &'ast crate::ItemTrait)
2616 where
2617     V: Visit<'ast> + ?Sized,
2618 {
2619     for it in &node.attrs {
2620         v.visit_attribute(it);
2621     }
2622     v.visit_visibility(&node.vis);
2623     skip!(node.unsafety);
2624     skip!(node.auto_token);
2625     if let Some(it) = &node.restriction {
2626         v.visit_impl_restriction(it);
2627     }
2628     skip!(node.trait_token);
2629     v.visit_ident(&node.ident);
2630     v.visit_generics(&node.generics);
2631     skip!(node.colon_token);
2632     for el in Punctuated::pairs(&node.supertraits) {
2633         let it = el.value();
2634         v.visit_type_param_bound(it);
2635     }
2636     skip!(node.brace_token);
2637     for it in &node.items {
2638         v.visit_trait_item(it);
2639     }
2640 }
2641 #[cfg(feature = "full")]
2642 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
2643 pub fn visit_item_trait_alias<'ast, V>(v: &mut V, node: &'ast crate::ItemTraitAlias)
2644 where
2645     V: Visit<'ast> + ?Sized,
2646 {
2647     for it in &node.attrs {
2648         v.visit_attribute(it);
2649     }
2650     v.visit_visibility(&node.vis);
2651     skip!(node.trait_token);
2652     v.visit_ident(&node.ident);
2653     v.visit_generics(&node.generics);
2654     skip!(node.eq_token);
2655     for el in Punctuated::pairs(&node.bounds) {
2656         let it = el.value();
2657         v.visit_type_param_bound(it);
2658     }
2659     skip!(node.semi_token);
2660 }
2661 #[cfg(feature = "full")]
2662 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
2663 pub fn visit_item_type<'ast, V>(v: &mut V, node: &'ast crate::ItemType)
2664 where
2665     V: Visit<'ast> + ?Sized,
2666 {
2667     for it in &node.attrs {
2668         v.visit_attribute(it);
2669     }
2670     v.visit_visibility(&node.vis);
2671     skip!(node.type_token);
2672     v.visit_ident(&node.ident);
2673     v.visit_generics(&node.generics);
2674     skip!(node.eq_token);
2675     v.visit_type(&*node.ty);
2676     skip!(node.semi_token);
2677 }
2678 #[cfg(feature = "full")]
2679 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
2680 pub fn visit_item_union<'ast, V>(v: &mut V, node: &'ast crate::ItemUnion)
2681 where
2682     V: Visit<'ast> + ?Sized,
2683 {
2684     for it in &node.attrs {
2685         v.visit_attribute(it);
2686     }
2687     v.visit_visibility(&node.vis);
2688     skip!(node.union_token);
2689     v.visit_ident(&node.ident);
2690     v.visit_generics(&node.generics);
2691     v.visit_fields_named(&node.fields);
2692 }
2693 #[cfg(feature = "full")]
2694 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
2695 pub fn visit_item_use<'ast, V>(v: &mut V, node: &'ast crate::ItemUse)
2696 where
2697     V: Visit<'ast> + ?Sized,
2698 {
2699     for it in &node.attrs {
2700         v.visit_attribute(it);
2701     }
2702     v.visit_visibility(&node.vis);
2703     skip!(node.use_token);
2704     skip!(node.leading_colon);
2705     v.visit_use_tree(&node.tree);
2706     skip!(node.semi_token);
2707 }
2708 #[cfg(feature = "full")]
2709 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
2710 pub fn visit_label<'ast, V>(v: &mut V, node: &'ast crate::Label)
2711 where
2712     V: Visit<'ast> + ?Sized,
2713 {
2714     v.visit_lifetime(&node.name);
2715     skip!(node.colon_token);
2716 }
2717 pub fn visit_lifetime<'ast, V>(v: &mut V, node: &'ast crate::Lifetime)
2718 where
2719     V: Visit<'ast> + ?Sized,
2720 {
2721     v.visit_span(&node.apostrophe);
2722     v.visit_ident(&node.ident);
2723 }
2724 #[cfg(any(feature = "derive", feature = "full"))]
2725 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
2726 pub fn visit_lifetime_param<'ast, V>(v: &mut V, node: &'ast crate::LifetimeParam)
2727 where
2728     V: Visit<'ast> + ?Sized,
2729 {
2730     for it in &node.attrs {
2731         v.visit_attribute(it);
2732     }
2733     v.visit_lifetime(&node.lifetime);
2734     skip!(node.colon_token);
2735     for el in Punctuated::pairs(&node.bounds) {
2736         let it = el.value();
2737         v.visit_lifetime(it);
2738     }
2739 }
2740 pub fn visit_lit<'ast, V>(v: &mut V, node: &'ast crate::Lit)
2741 where
2742     V: Visit<'ast> + ?Sized,
2743 {
2744     match node {
2745         crate::Lit::Str(_binding_0) => {
2746             v.visit_lit_str(_binding_0);
2747         }
2748         crate::Lit::ByteStr(_binding_0) => {
2749             v.visit_lit_byte_str(_binding_0);
2750         }
2751         crate::Lit::CStr(_binding_0) => {
2752             v.visit_lit_cstr(_binding_0);
2753         }
2754         crate::Lit::Byte(_binding_0) => {
2755             v.visit_lit_byte(_binding_0);
2756         }
2757         crate::Lit::Char(_binding_0) => {
2758             v.visit_lit_char(_binding_0);
2759         }
2760         crate::Lit::Int(_binding_0) => {
2761             v.visit_lit_int(_binding_0);
2762         }
2763         crate::Lit::Float(_binding_0) => {
2764             v.visit_lit_float(_binding_0);
2765         }
2766         crate::Lit::Bool(_binding_0) => {
2767             v.visit_lit_bool(_binding_0);
2768         }
2769         crate::Lit::Verbatim(_binding_0) => {
2770             skip!(_binding_0);
2771         }
2772     }
2773 }
2774 pub fn visit_lit_bool<'ast, V>(v: &mut V, node: &'ast crate::LitBool)
2775 where
2776     V: Visit<'ast> + ?Sized,
2777 {
2778     skip!(node.value);
2779     v.visit_span(&node.span);
2780 }
2781 pub fn visit_lit_byte<'ast, V>(v: &mut V, node: &'ast crate::LitByte)
2782 where
2783     V: Visit<'ast> + ?Sized,
2784 {}
2785 pub fn visit_lit_byte_str<'ast, V>(v: &mut V, node: &'ast crate::LitByteStr)
2786 where
2787     V: Visit<'ast> + ?Sized,
2788 {}
2789 pub fn visit_lit_cstr<'ast, V>(v: &mut V, node: &'ast crate::LitCStr)
2790 where
2791     V: Visit<'ast> + ?Sized,
2792 {}
2793 pub fn visit_lit_char<'ast, V>(v: &mut V, node: &'ast crate::LitChar)
2794 where
2795     V: Visit<'ast> + ?Sized,
2796 {}
2797 pub fn visit_lit_float<'ast, V>(v: &mut V, node: &'ast crate::LitFloat)
2798 where
2799     V: Visit<'ast> + ?Sized,
2800 {}
2801 pub fn visit_lit_int<'ast, V>(v: &mut V, node: &'ast crate::LitInt)
2802 where
2803     V: Visit<'ast> + ?Sized,
2804 {}
2805 pub fn visit_lit_str<'ast, V>(v: &mut V, node: &'ast crate::LitStr)
2806 where
2807     V: Visit<'ast> + ?Sized,
2808 {}
2809 #[cfg(feature = "full")]
2810 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
2811 pub fn visit_local<'ast, V>(v: &mut V, node: &'ast crate::Local)
2812 where
2813     V: Visit<'ast> + ?Sized,
2814 {
2815     for it in &node.attrs {
2816         v.visit_attribute(it);
2817     }
2818     skip!(node.let_token);
2819     v.visit_pat(&node.pat);
2820     if let Some(it) = &node.init {
2821         v.visit_local_init(it);
2822     }
2823     skip!(node.semi_token);
2824 }
2825 #[cfg(feature = "full")]
2826 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
2827 pub fn visit_local_init<'ast, V>(v: &mut V, node: &'ast crate::LocalInit)
2828 where
2829     V: Visit<'ast> + ?Sized,
2830 {
2831     skip!(node.eq_token);
2832     v.visit_expr(&*node.expr);
2833     if let Some(it) = &node.diverge {
2834         skip!((it).0);
2835         v.visit_expr(&*(it).1);
2836     }
2837 }
2838 #[cfg(any(feature = "derive", feature = "full"))]
2839 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
2840 pub fn visit_macro<'ast, V>(v: &mut V, node: &'ast crate::Macro)
2841 where
2842     V: Visit<'ast> + ?Sized,
2843 {
2844     v.visit_path(&node.path);
2845     skip!(node.bang_token);
2846     v.visit_macro_delimiter(&node.delimiter);
2847     v.visit_token_stream(&node.tokens);
2848 }
2849 #[cfg(any(feature = "derive", feature = "full"))]
2850 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
2851 pub fn visit_macro_delimiter<'ast, V>(v: &mut V, node: &'ast crate::MacroDelimiter)
2852 where
2853     V: Visit<'ast> + ?Sized,
2854 {
2855     match node {
2856         crate::MacroDelimiter::Paren(_binding_0) => {
2857             skip!(_binding_0);
2858         }
2859         crate::MacroDelimiter::Brace(_binding_0) => {
2860             skip!(_binding_0);
2861         }
2862         crate::MacroDelimiter::Bracket(_binding_0) => {
2863             skip!(_binding_0);
2864         }
2865     }
2866 }
2867 #[cfg(any(feature = "derive", feature = "full"))]
2868 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
2869 pub fn visit_member<'ast, V>(v: &mut V, node: &'ast crate::Member)
2870 where
2871     V: Visit<'ast> + ?Sized,
2872 {
2873     match node {
2874         crate::Member::Named(_binding_0) => {
2875             v.visit_ident(_binding_0);
2876         }
2877         crate::Member::Unnamed(_binding_0) => {
2878             v.visit_index(_binding_0);
2879         }
2880     }
2881 }
2882 #[cfg(any(feature = "derive", feature = "full"))]
2883 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
2884 pub fn visit_meta<'ast, V>(v: &mut V, node: &'ast crate::Meta)
2885 where
2886     V: Visit<'ast> + ?Sized,
2887 {
2888     match node {
2889         crate::Meta::Path(_binding_0) => {
2890             v.visit_path(_binding_0);
2891         }
2892         crate::Meta::List(_binding_0) => {
2893             v.visit_meta_list(_binding_0);
2894         }
2895         crate::Meta::NameValue(_binding_0) => {
2896             v.visit_meta_name_value(_binding_0);
2897         }
2898     }
2899 }
2900 #[cfg(any(feature = "derive", feature = "full"))]
2901 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
2902 pub fn visit_meta_list<'ast, V>(v: &mut V, node: &'ast crate::MetaList)
2903 where
2904     V: Visit<'ast> + ?Sized,
2905 {
2906     v.visit_path(&node.path);
2907     v.visit_macro_delimiter(&node.delimiter);
2908     v.visit_token_stream(&node.tokens);
2909 }
2910 #[cfg(any(feature = "derive", feature = "full"))]
2911 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
2912 pub fn visit_meta_name_value<'ast, V>(v: &mut V, node: &'ast crate::MetaNameValue)
2913 where
2914     V: Visit<'ast> + ?Sized,
2915 {
2916     v.visit_path(&node.path);
2917     skip!(node.eq_token);
2918     v.visit_expr(&node.value);
2919 }
2920 #[cfg(any(feature = "derive", feature = "full"))]
2921 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
2922 pub fn visit_parenthesized_generic_arguments<'ast, V>(
2923     v: &mut V,
2924     node: &'ast crate::ParenthesizedGenericArguments,
2925 )
2926 where
2927     V: Visit<'ast> + ?Sized,
2928 {
2929     skip!(node.paren_token);
2930     for el in Punctuated::pairs(&node.inputs) {
2931         let it = el.value();
2932         v.visit_type(it);
2933     }
2934     v.visit_return_type(&node.output);
2935 }
2936 #[cfg(feature = "full")]
2937 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
2938 pub fn visit_pat<'ast, V>(v: &mut V, node: &'ast crate::Pat)
2939 where
2940     V: Visit<'ast> + ?Sized,
2941 {
2942     match node {
2943         crate::Pat::Const(_binding_0) => {
2944             v.visit_expr_const(_binding_0);
2945         }
2946         crate::Pat::Ident(_binding_0) => {
2947             v.visit_pat_ident(_binding_0);
2948         }
2949         crate::Pat::Lit(_binding_0) => {
2950             v.visit_expr_lit(_binding_0);
2951         }
2952         crate::Pat::Macro(_binding_0) => {
2953             v.visit_expr_macro(_binding_0);
2954         }
2955         crate::Pat::Or(_binding_0) => {
2956             v.visit_pat_or(_binding_0);
2957         }
2958         crate::Pat::Paren(_binding_0) => {
2959             v.visit_pat_paren(_binding_0);
2960         }
2961         crate::Pat::Path(_binding_0) => {
2962             v.visit_expr_path(_binding_0);
2963         }
2964         crate::Pat::Range(_binding_0) => {
2965             v.visit_expr_range(_binding_0);
2966         }
2967         crate::Pat::Reference(_binding_0) => {
2968             v.visit_pat_reference(_binding_0);
2969         }
2970         crate::Pat::Rest(_binding_0) => {
2971             v.visit_pat_rest(_binding_0);
2972         }
2973         crate::Pat::Slice(_binding_0) => {
2974             v.visit_pat_slice(_binding_0);
2975         }
2976         crate::Pat::Struct(_binding_0) => {
2977             v.visit_pat_struct(_binding_0);
2978         }
2979         crate::Pat::Tuple(_binding_0) => {
2980             v.visit_pat_tuple(_binding_0);
2981         }
2982         crate::Pat::TupleStruct(_binding_0) => {
2983             v.visit_pat_tuple_struct(_binding_0);
2984         }
2985         crate::Pat::Type(_binding_0) => {
2986             v.visit_pat_type(_binding_0);
2987         }
2988         crate::Pat::Verbatim(_binding_0) => {
2989             v.visit_token_stream(_binding_0);
2990         }
2991         crate::Pat::Wild(_binding_0) => {
2992             v.visit_pat_wild(_binding_0);
2993         }
2994     }
2995 }
2996 #[cfg(feature = "full")]
2997 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
2998 pub fn visit_pat_ident<'ast, V>(v: &mut V, node: &'ast crate::PatIdent)
2999 where
3000     V: Visit<'ast> + ?Sized,
3001 {
3002     for it in &node.attrs {
3003         v.visit_attribute(it);
3004     }
3005     skip!(node.by_ref);
3006     skip!(node.mutability);
3007     v.visit_ident(&node.ident);
3008     if let Some(it) = &node.subpat {
3009         skip!((it).0);
3010         v.visit_pat(&*(it).1);
3011     }
3012 }
3013 #[cfg(feature = "full")]
3014 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
3015 pub fn visit_pat_or<'ast, V>(v: &mut V, node: &'ast crate::PatOr)
3016 where
3017     V: Visit<'ast> + ?Sized,
3018 {
3019     for it in &node.attrs {
3020         v.visit_attribute(it);
3021     }
3022     skip!(node.leading_vert);
3023     for el in Punctuated::pairs(&node.cases) {
3024         let it = el.value();
3025         v.visit_pat(it);
3026     }
3027 }
3028 #[cfg(feature = "full")]
3029 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
3030 pub fn visit_pat_paren<'ast, V>(v: &mut V, node: &'ast crate::PatParen)
3031 where
3032     V: Visit<'ast> + ?Sized,
3033 {
3034     for it in &node.attrs {
3035         v.visit_attribute(it);
3036     }
3037     skip!(node.paren_token);
3038     v.visit_pat(&*node.pat);
3039 }
3040 #[cfg(feature = "full")]
3041 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
3042 pub fn visit_pat_reference<'ast, V>(v: &mut V, node: &'ast crate::PatReference)
3043 where
3044     V: Visit<'ast> + ?Sized,
3045 {
3046     for it in &node.attrs {
3047         v.visit_attribute(it);
3048     }
3049     skip!(node.and_token);
3050     skip!(node.mutability);
3051     v.visit_pat(&*node.pat);
3052 }
3053 #[cfg(feature = "full")]
3054 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
3055 pub fn visit_pat_rest<'ast, V>(v: &mut V, node: &'ast crate::PatRest)
3056 where
3057     V: Visit<'ast> + ?Sized,
3058 {
3059     for it in &node.attrs {
3060         v.visit_attribute(it);
3061     }
3062     skip!(node.dot2_token);
3063 }
3064 #[cfg(feature = "full")]
3065 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
3066 pub fn visit_pat_slice<'ast, V>(v: &mut V, node: &'ast crate::PatSlice)
3067 where
3068     V: Visit<'ast> + ?Sized,
3069 {
3070     for it in &node.attrs {
3071         v.visit_attribute(it);
3072     }
3073     skip!(node.bracket_token);
3074     for el in Punctuated::pairs(&node.elems) {
3075         let it = el.value();
3076         v.visit_pat(it);
3077     }
3078 }
3079 #[cfg(feature = "full")]
3080 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
3081 pub fn visit_pat_struct<'ast, V>(v: &mut V, node: &'ast crate::PatStruct)
3082 where
3083     V: Visit<'ast> + ?Sized,
3084 {
3085     for it in &node.attrs {
3086         v.visit_attribute(it);
3087     }
3088     if let Some(it) = &node.qself {
3089         v.visit_qself(it);
3090     }
3091     v.visit_path(&node.path);
3092     skip!(node.brace_token);
3093     for el in Punctuated::pairs(&node.fields) {
3094         let it = el.value();
3095         v.visit_field_pat(it);
3096     }
3097     if let Some(it) = &node.rest {
3098         v.visit_pat_rest(it);
3099     }
3100 }
3101 #[cfg(feature = "full")]
3102 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
3103 pub fn visit_pat_tuple<'ast, V>(v: &mut V, node: &'ast crate::PatTuple)
3104 where
3105     V: Visit<'ast> + ?Sized,
3106 {
3107     for it in &node.attrs {
3108         v.visit_attribute(it);
3109     }
3110     skip!(node.paren_token);
3111     for el in Punctuated::pairs(&node.elems) {
3112         let it = el.value();
3113         v.visit_pat(it);
3114     }
3115 }
3116 #[cfg(feature = "full")]
3117 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
3118 pub fn visit_pat_tuple_struct<'ast, V>(v: &mut V, node: &'ast crate::PatTupleStruct)
3119 where
3120     V: Visit<'ast> + ?Sized,
3121 {
3122     for it in &node.attrs {
3123         v.visit_attribute(it);
3124     }
3125     if let Some(it) = &node.qself {
3126         v.visit_qself(it);
3127     }
3128     v.visit_path(&node.path);
3129     skip!(node.paren_token);
3130     for el in Punctuated::pairs(&node.elems) {
3131         let it = el.value();
3132         v.visit_pat(it);
3133     }
3134 }
3135 #[cfg(feature = "full")]
3136 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
3137 pub fn visit_pat_type<'ast, V>(v: &mut V, node: &'ast crate::PatType)
3138 where
3139     V: Visit<'ast> + ?Sized,
3140 {
3141     for it in &node.attrs {
3142         v.visit_attribute(it);
3143     }
3144     v.visit_pat(&*node.pat);
3145     skip!(node.colon_token);
3146     v.visit_type(&*node.ty);
3147 }
3148 #[cfg(feature = "full")]
3149 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
3150 pub fn visit_pat_wild<'ast, V>(v: &mut V, node: &'ast crate::PatWild)
3151 where
3152     V: Visit<'ast> + ?Sized,
3153 {
3154     for it in &node.attrs {
3155         v.visit_attribute(it);
3156     }
3157     skip!(node.underscore_token);
3158 }
3159 #[cfg(any(feature = "derive", feature = "full"))]
3160 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
3161 pub fn visit_path<'ast, V>(v: &mut V, node: &'ast crate::Path)
3162 where
3163     V: Visit<'ast> + ?Sized,
3164 {
3165     skip!(node.leading_colon);
3166     for el in Punctuated::pairs(&node.segments) {
3167         let it = el.value();
3168         v.visit_path_segment(it);
3169     }
3170 }
3171 #[cfg(any(feature = "derive", feature = "full"))]
3172 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
3173 pub fn visit_path_arguments<'ast, V>(v: &mut V, node: &'ast crate::PathArguments)
3174 where
3175     V: Visit<'ast> + ?Sized,
3176 {
3177     match node {
3178         crate::PathArguments::None => {}
3179         crate::PathArguments::AngleBracketed(_binding_0) => {
3180             v.visit_angle_bracketed_generic_arguments(_binding_0);
3181         }
3182         crate::PathArguments::Parenthesized(_binding_0) => {
3183             v.visit_parenthesized_generic_arguments(_binding_0);
3184         }
3185     }
3186 }
3187 #[cfg(any(feature = "derive", feature = "full"))]
3188 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
3189 pub fn visit_path_segment<'ast, V>(v: &mut V, node: &'ast crate::PathSegment)
3190 where
3191     V: Visit<'ast> + ?Sized,
3192 {
3193     v.visit_ident(&node.ident);
3194     v.visit_path_arguments(&node.arguments);
3195 }
3196 #[cfg(feature = "full")]
3197 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
3198 pub fn visit_pointer_mutability<'ast, V>(v: &mut V, node: &'ast crate::PointerMutability)
3199 where
3200     V: Visit<'ast> + ?Sized,
3201 {
3202     match node {
3203         crate::PointerMutability::Const(_binding_0) => {
3204             skip!(_binding_0);
3205         }
3206         crate::PointerMutability::Mut(_binding_0) => {
3207             skip!(_binding_0);
3208         }
3209     }
3210 }
3211 #[cfg(feature = "full")]
3212 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
3213 pub fn visit_precise_capture<'ast, V>(v: &mut V, node: &'ast crate::PreciseCapture)
3214 where
3215     V: Visit<'ast> + ?Sized,
3216 {
3217     skip!(node.use_token);
3218     skip!(node.lt_token);
3219     for el in Punctuated::pairs(&node.params) {
3220         let it = el.value();
3221         v.visit_captured_param(it);
3222     }
3223     skip!(node.gt_token);
3224 }
3225 #[cfg(any(feature = "derive", feature = "full"))]
3226 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
3227 pub fn visit_predicate_lifetime<'ast, V>(v: &mut V, node: &'ast crate::PredicateLifetime)
3228 where
3229     V: Visit<'ast> + ?Sized,
3230 {
3231     v.visit_lifetime(&node.lifetime);
3232     skip!(node.colon_token);
3233     for el in Punctuated::pairs(&node.bounds) {
3234         let it = el.value();
3235         v.visit_lifetime(it);
3236     }
3237 }
3238 #[cfg(any(feature = "derive", feature = "full"))]
3239 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
3240 pub fn visit_predicate_type<'ast, V>(v: &mut V, node: &'ast crate::PredicateType)
3241 where
3242     V: Visit<'ast> + ?Sized,
3243 {
3244     if let Some(it) = &node.lifetimes {
3245         v.visit_bound_lifetimes(it);
3246     }
3247     v.visit_type(&node.bounded_ty);
3248     skip!(node.colon_token);
3249     for el in Punctuated::pairs(&node.bounds) {
3250         let it = el.value();
3251         v.visit_type_param_bound(it);
3252     }
3253 }
3254 #[cfg(any(feature = "derive", feature = "full"))]
3255 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
3256 pub fn visit_qself<'ast, V>(v: &mut V, node: &'ast crate::QSelf)
3257 where
3258     V: Visit<'ast> + ?Sized,
3259 {
3260     skip!(node.lt_token);
3261     v.visit_type(&*node.ty);
3262     skip!(node.position);
3263     skip!(node.as_token);
3264     skip!(node.gt_token);
3265 }
3266 #[cfg(feature = "full")]
3267 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
3268 pub fn visit_range_limits<'ast, V>(v: &mut V, node: &'ast crate::RangeLimits)
3269 where
3270     V: Visit<'ast> + ?Sized,
3271 {
3272     match node {
3273         crate::RangeLimits::HalfOpen(_binding_0) => {
3274             skip!(_binding_0);
3275         }
3276         crate::RangeLimits::Closed(_binding_0) => {
3277             skip!(_binding_0);
3278         }
3279     }
3280 }
3281 #[cfg(feature = "full")]
3282 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
3283 pub fn visit_receiver<'ast, V>(v: &mut V, node: &'ast crate::Receiver)
3284 where
3285     V: Visit<'ast> + ?Sized,
3286 {
3287     for it in &node.attrs {
3288         v.visit_attribute(it);
3289     }
3290     if let Some(it) = &node.reference {
3291         skip!((it).0);
3292         if let Some(it) = &(it).1 {
3293             v.visit_lifetime(it);
3294         }
3295     }
3296     skip!(node.mutability);
3297     skip!(node.self_token);
3298     skip!(node.colon_token);
3299     v.visit_type(&*node.ty);
3300 }
3301 #[cfg(any(feature = "derive", feature = "full"))]
3302 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
3303 pub fn visit_return_type<'ast, V>(v: &mut V, node: &'ast crate::ReturnType)
3304 where
3305     V: Visit<'ast> + ?Sized,
3306 {
3307     match node {
3308         crate::ReturnType::Default => {}
3309         crate::ReturnType::Type(_binding_0, _binding_1) => {
3310             skip!(_binding_0);
3311             v.visit_type(&**_binding_1);
3312         }
3313     }
3314 }
3315 #[cfg(feature = "full")]
3316 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
3317 pub fn visit_signature<'ast, V>(v: &mut V, node: &'ast crate::Signature)
3318 where
3319     V: Visit<'ast> + ?Sized,
3320 {
3321     skip!(node.constness);
3322     skip!(node.asyncness);
3323     skip!(node.unsafety);
3324     if let Some(it) = &node.abi {
3325         v.visit_abi(it);
3326     }
3327     skip!(node.fn_token);
3328     v.visit_ident(&node.ident);
3329     v.visit_generics(&node.generics);
3330     skip!(node.paren_token);
3331     for el in Punctuated::pairs(&node.inputs) {
3332         let it = el.value();
3333         v.visit_fn_arg(it);
3334     }
3335     if let Some(it) = &node.variadic {
3336         v.visit_variadic(it);
3337     }
3338     v.visit_return_type(&node.output);
3339 }
3340 pub fn visit_span<'ast, V>(v: &mut V, node: &proc_macro2::Span)
3341 where
3342     V: Visit<'ast> + ?Sized,
3343 {}
3344 #[cfg(feature = "full")]
3345 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
3346 pub fn visit_static_mutability<'ast, V>(v: &mut V, node: &'ast crate::StaticMutability)
3347 where
3348     V: Visit<'ast> + ?Sized,
3349 {
3350     match node {
3351         crate::StaticMutability::Mut(_binding_0) => {
3352             skip!(_binding_0);
3353         }
3354         crate::StaticMutability::None => {}
3355     }
3356 }
3357 #[cfg(feature = "full")]
3358 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
3359 pub fn visit_stmt<'ast, V>(v: &mut V, node: &'ast crate::Stmt)
3360 where
3361     V: Visit<'ast> + ?Sized,
3362 {
3363     match node {
3364         crate::Stmt::Local(_binding_0) => {
3365             v.visit_local(_binding_0);
3366         }
3367         crate::Stmt::Item(_binding_0) => {
3368             v.visit_item(_binding_0);
3369         }
3370         crate::Stmt::Expr(_binding_0, _binding_1) => {
3371             v.visit_expr(_binding_0);
3372             skip!(_binding_1);
3373         }
3374         crate::Stmt::Macro(_binding_0) => {
3375             v.visit_stmt_macro(_binding_0);
3376         }
3377     }
3378 }
3379 #[cfg(feature = "full")]
3380 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
3381 pub fn visit_stmt_macro<'ast, V>(v: &mut V, node: &'ast crate::StmtMacro)
3382 where
3383     V: Visit<'ast> + ?Sized,
3384 {
3385     for it in &node.attrs {
3386         v.visit_attribute(it);
3387     }
3388     v.visit_macro(&node.mac);
3389     skip!(node.semi_token);
3390 }
3391 #[cfg(any(feature = "derive", feature = "full"))]
3392 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
3393 pub fn visit_trait_bound<'ast, V>(v: &mut V, node: &'ast crate::TraitBound)
3394 where
3395     V: Visit<'ast> + ?Sized,
3396 {
3397     skip!(node.paren_token);
3398     v.visit_trait_bound_modifier(&node.modifier);
3399     if let Some(it) = &node.lifetimes {
3400         v.visit_bound_lifetimes(it);
3401     }
3402     v.visit_path(&node.path);
3403 }
3404 #[cfg(any(feature = "derive", feature = "full"))]
3405 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
3406 pub fn visit_trait_bound_modifier<'ast, V>(
3407     v: &mut V,
3408     node: &'ast crate::TraitBoundModifier,
3409 )
3410 where
3411     V: Visit<'ast> + ?Sized,
3412 {
3413     match node {
3414         crate::TraitBoundModifier::None => {}
3415         crate::TraitBoundModifier::Maybe(_binding_0) => {
3416             skip!(_binding_0);
3417         }
3418     }
3419 }
3420 #[cfg(feature = "full")]
3421 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
3422 pub fn visit_trait_item<'ast, V>(v: &mut V, node: &'ast crate::TraitItem)
3423 where
3424     V: Visit<'ast> + ?Sized,
3425 {
3426     match node {
3427         crate::TraitItem::Const(_binding_0) => {
3428             v.visit_trait_item_const(_binding_0);
3429         }
3430         crate::TraitItem::Fn(_binding_0) => {
3431             v.visit_trait_item_fn(_binding_0);
3432         }
3433         crate::TraitItem::Type(_binding_0) => {
3434             v.visit_trait_item_type(_binding_0);
3435         }
3436         crate::TraitItem::Macro(_binding_0) => {
3437             v.visit_trait_item_macro(_binding_0);
3438         }
3439         crate::TraitItem::Verbatim(_binding_0) => {
3440             v.visit_token_stream(_binding_0);
3441         }
3442     }
3443 }
3444 #[cfg(feature = "full")]
3445 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
3446 pub fn visit_trait_item_const<'ast, V>(v: &mut V, node: &'ast crate::TraitItemConst)
3447 where
3448     V: Visit<'ast> + ?Sized,
3449 {
3450     for it in &node.attrs {
3451         v.visit_attribute(it);
3452     }
3453     skip!(node.const_token);
3454     v.visit_ident(&node.ident);
3455     v.visit_generics(&node.generics);
3456     skip!(node.colon_token);
3457     v.visit_type(&node.ty);
3458     if let Some(it) = &node.default {
3459         skip!((it).0);
3460         v.visit_expr(&(it).1);
3461     }
3462     skip!(node.semi_token);
3463 }
3464 #[cfg(feature = "full")]
3465 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
3466 pub fn visit_trait_item_fn<'ast, V>(v: &mut V, node: &'ast crate::TraitItemFn)
3467 where
3468     V: Visit<'ast> + ?Sized,
3469 {
3470     for it in &node.attrs {
3471         v.visit_attribute(it);
3472     }
3473     v.visit_signature(&node.sig);
3474     if let Some(it) = &node.default {
3475         v.visit_block(it);
3476     }
3477     skip!(node.semi_token);
3478 }
3479 #[cfg(feature = "full")]
3480 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
3481 pub fn visit_trait_item_macro<'ast, V>(v: &mut V, node: &'ast crate::TraitItemMacro)
3482 where
3483     V: Visit<'ast> + ?Sized,
3484 {
3485     for it in &node.attrs {
3486         v.visit_attribute(it);
3487     }
3488     v.visit_macro(&node.mac);
3489     skip!(node.semi_token);
3490 }
3491 #[cfg(feature = "full")]
3492 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
3493 pub fn visit_trait_item_type<'ast, V>(v: &mut V, node: &'ast crate::TraitItemType)
3494 where
3495     V: Visit<'ast> + ?Sized,
3496 {
3497     for it in &node.attrs {
3498         v.visit_attribute(it);
3499     }
3500     skip!(node.type_token);
3501     v.visit_ident(&node.ident);
3502     v.visit_generics(&node.generics);
3503     skip!(node.colon_token);
3504     for el in Punctuated::pairs(&node.bounds) {
3505         let it = el.value();
3506         v.visit_type_param_bound(it);
3507     }
3508     if let Some(it) = &node.default {
3509         skip!((it).0);
3510         v.visit_type(&(it).1);
3511     }
3512     skip!(node.semi_token);
3513 }
3514 #[cfg(any(feature = "derive", feature = "full"))]
3515 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
3516 pub fn visit_type<'ast, V>(v: &mut V, node: &'ast crate::Type)
3517 where
3518     V: Visit<'ast> + ?Sized,
3519 {
3520     match node {
3521         crate::Type::Array(_binding_0) => {
3522             v.visit_type_array(_binding_0);
3523         }
3524         crate::Type::BareFn(_binding_0) => {
3525             v.visit_type_bare_fn(_binding_0);
3526         }
3527         crate::Type::Group(_binding_0) => {
3528             v.visit_type_group(_binding_0);
3529         }
3530         crate::Type::ImplTrait(_binding_0) => {
3531             v.visit_type_impl_trait(_binding_0);
3532         }
3533         crate::Type::Infer(_binding_0) => {
3534             v.visit_type_infer(_binding_0);
3535         }
3536         crate::Type::Macro(_binding_0) => {
3537             v.visit_type_macro(_binding_0);
3538         }
3539         crate::Type::Never(_binding_0) => {
3540             v.visit_type_never(_binding_0);
3541         }
3542         crate::Type::Paren(_binding_0) => {
3543             v.visit_type_paren(_binding_0);
3544         }
3545         crate::Type::Path(_binding_0) => {
3546             v.visit_type_path(_binding_0);
3547         }
3548         crate::Type::Ptr(_binding_0) => {
3549             v.visit_type_ptr(_binding_0);
3550         }
3551         crate::Type::Reference(_binding_0) => {
3552             v.visit_type_reference(_binding_0);
3553         }
3554         crate::Type::Slice(_binding_0) => {
3555             v.visit_type_slice(_binding_0);
3556         }
3557         crate::Type::TraitObject(_binding_0) => {
3558             v.visit_type_trait_object(_binding_0);
3559         }
3560         crate::Type::Tuple(_binding_0) => {
3561             v.visit_type_tuple(_binding_0);
3562         }
3563         crate::Type::Verbatim(_binding_0) => {
3564             v.visit_token_stream(_binding_0);
3565         }
3566     }
3567 }
3568 #[cfg(any(feature = "derive", feature = "full"))]
3569 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
3570 pub fn visit_type_array<'ast, V>(v: &mut V, node: &'ast crate::TypeArray)
3571 where
3572     V: Visit<'ast> + ?Sized,
3573 {
3574     skip!(node.bracket_token);
3575     v.visit_type(&*node.elem);
3576     skip!(node.semi_token);
3577     v.visit_expr(&node.len);
3578 }
3579 #[cfg(any(feature = "derive", feature = "full"))]
3580 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
3581 pub fn visit_type_bare_fn<'ast, V>(v: &mut V, node: &'ast crate::TypeBareFn)
3582 where
3583     V: Visit<'ast> + ?Sized,
3584 {
3585     if let Some(it) = &node.lifetimes {
3586         v.visit_bound_lifetimes(it);
3587     }
3588     skip!(node.unsafety);
3589     if let Some(it) = &node.abi {
3590         v.visit_abi(it);
3591     }
3592     skip!(node.fn_token);
3593     skip!(node.paren_token);
3594     for el in Punctuated::pairs(&node.inputs) {
3595         let it = el.value();
3596         v.visit_bare_fn_arg(it);
3597     }
3598     if let Some(it) = &node.variadic {
3599         v.visit_bare_variadic(it);
3600     }
3601     v.visit_return_type(&node.output);
3602 }
3603 #[cfg(any(feature = "derive", feature = "full"))]
3604 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
3605 pub fn visit_type_group<'ast, V>(v: &mut V, node: &'ast crate::TypeGroup)
3606 where
3607     V: Visit<'ast> + ?Sized,
3608 {
3609     skip!(node.group_token);
3610     v.visit_type(&*node.elem);
3611 }
3612 #[cfg(any(feature = "derive", feature = "full"))]
3613 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
3614 pub fn visit_type_impl_trait<'ast, V>(v: &mut V, node: &'ast crate::TypeImplTrait)
3615 where
3616     V: Visit<'ast> + ?Sized,
3617 {
3618     skip!(node.impl_token);
3619     for el in Punctuated::pairs(&node.bounds) {
3620         let it = el.value();
3621         v.visit_type_param_bound(it);
3622     }
3623 }
3624 #[cfg(any(feature = "derive", feature = "full"))]
3625 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
3626 pub fn visit_type_infer<'ast, V>(v: &mut V, node: &'ast crate::TypeInfer)
3627 where
3628     V: Visit<'ast> + ?Sized,
3629 {
3630     skip!(node.underscore_token);
3631 }
3632 #[cfg(any(feature = "derive", feature = "full"))]
3633 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
3634 pub fn visit_type_macro<'ast, V>(v: &mut V, node: &'ast crate::TypeMacro)
3635 where
3636     V: Visit<'ast> + ?Sized,
3637 {
3638     v.visit_macro(&node.mac);
3639 }
3640 #[cfg(any(feature = "derive", feature = "full"))]
3641 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
3642 pub fn visit_type_never<'ast, V>(v: &mut V, node: &'ast crate::TypeNever)
3643 where
3644     V: Visit<'ast> + ?Sized,
3645 {
3646     skip!(node.bang_token);
3647 }
3648 #[cfg(any(feature = "derive", feature = "full"))]
3649 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
3650 pub fn visit_type_param<'ast, V>(v: &mut V, node: &'ast crate::TypeParam)
3651 where
3652     V: Visit<'ast> + ?Sized,
3653 {
3654     for it in &node.attrs {
3655         v.visit_attribute(it);
3656     }
3657     v.visit_ident(&node.ident);
3658     skip!(node.colon_token);
3659     for el in Punctuated::pairs(&node.bounds) {
3660         let it = el.value();
3661         v.visit_type_param_bound(it);
3662     }
3663     skip!(node.eq_token);
3664     if let Some(it) = &node.default {
3665         v.visit_type(it);
3666     }
3667 }
3668 #[cfg(any(feature = "derive", feature = "full"))]
3669 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
3670 pub fn visit_type_param_bound<'ast, V>(v: &mut V, node: &'ast crate::TypeParamBound)
3671 where
3672     V: Visit<'ast> + ?Sized,
3673 {
3674     match node {
3675         crate::TypeParamBound::Trait(_binding_0) => {
3676             v.visit_trait_bound(_binding_0);
3677         }
3678         crate::TypeParamBound::Lifetime(_binding_0) => {
3679             v.visit_lifetime(_binding_0);
3680         }
3681         crate::TypeParamBound::PreciseCapture(_binding_0) => {
3682             full!(v.visit_precise_capture(_binding_0));
3683         }
3684         crate::TypeParamBound::Verbatim(_binding_0) => {
3685             v.visit_token_stream(_binding_0);
3686         }
3687     }
3688 }
3689 #[cfg(any(feature = "derive", feature = "full"))]
3690 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
3691 pub fn visit_type_paren<'ast, V>(v: &mut V, node: &'ast crate::TypeParen)
3692 where
3693     V: Visit<'ast> + ?Sized,
3694 {
3695     skip!(node.paren_token);
3696     v.visit_type(&*node.elem);
3697 }
3698 #[cfg(any(feature = "derive", feature = "full"))]
3699 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
3700 pub fn visit_type_path<'ast, V>(v: &mut V, node: &'ast crate::TypePath)
3701 where
3702     V: Visit<'ast> + ?Sized,
3703 {
3704     if let Some(it) = &node.qself {
3705         v.visit_qself(it);
3706     }
3707     v.visit_path(&node.path);
3708 }
3709 #[cfg(any(feature = "derive", feature = "full"))]
3710 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
3711 pub fn visit_type_ptr<'ast, V>(v: &mut V, node: &'ast crate::TypePtr)
3712 where
3713     V: Visit<'ast> + ?Sized,
3714 {
3715     skip!(node.star_token);
3716     skip!(node.const_token);
3717     skip!(node.mutability);
3718     v.visit_type(&*node.elem);
3719 }
3720 #[cfg(any(feature = "derive", feature = "full"))]
3721 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
3722 pub fn visit_type_reference<'ast, V>(v: &mut V, node: &'ast crate::TypeReference)
3723 where
3724     V: Visit<'ast> + ?Sized,
3725 {
3726     skip!(node.and_token);
3727     if let Some(it) = &node.lifetime {
3728         v.visit_lifetime(it);
3729     }
3730     skip!(node.mutability);
3731     v.visit_type(&*node.elem);
3732 }
3733 #[cfg(any(feature = "derive", feature = "full"))]
3734 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
3735 pub fn visit_type_slice<'ast, V>(v: &mut V, node: &'ast crate::TypeSlice)
3736 where
3737     V: Visit<'ast> + ?Sized,
3738 {
3739     skip!(node.bracket_token);
3740     v.visit_type(&*node.elem);
3741 }
3742 #[cfg(any(feature = "derive", feature = "full"))]
3743 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
3744 pub fn visit_type_trait_object<'ast, V>(v: &mut V, node: &'ast crate::TypeTraitObject)
3745 where
3746     V: Visit<'ast> + ?Sized,
3747 {
3748     skip!(node.dyn_token);
3749     for el in Punctuated::pairs(&node.bounds) {
3750         let it = el.value();
3751         v.visit_type_param_bound(it);
3752     }
3753 }
3754 #[cfg(any(feature = "derive", feature = "full"))]
3755 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
3756 pub fn visit_type_tuple<'ast, V>(v: &mut V, node: &'ast crate::TypeTuple)
3757 where
3758     V: Visit<'ast> + ?Sized,
3759 {
3760     skip!(node.paren_token);
3761     for el in Punctuated::pairs(&node.elems) {
3762         let it = el.value();
3763         v.visit_type(it);
3764     }
3765 }
3766 #[cfg(any(feature = "derive", feature = "full"))]
3767 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
3768 pub fn visit_un_op<'ast, V>(v: &mut V, node: &'ast crate::UnOp)
3769 where
3770     V: Visit<'ast> + ?Sized,
3771 {
3772     match node {
3773         crate::UnOp::Deref(_binding_0) => {
3774             skip!(_binding_0);
3775         }
3776         crate::UnOp::Not(_binding_0) => {
3777             skip!(_binding_0);
3778         }
3779         crate::UnOp::Neg(_binding_0) => {
3780             skip!(_binding_0);
3781         }
3782     }
3783 }
3784 #[cfg(feature = "full")]
3785 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
3786 pub fn visit_use_glob<'ast, V>(v: &mut V, node: &'ast crate::UseGlob)
3787 where
3788     V: Visit<'ast> + ?Sized,
3789 {
3790     skip!(node.star_token);
3791 }
3792 #[cfg(feature = "full")]
3793 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
3794 pub fn visit_use_group<'ast, V>(v: &mut V, node: &'ast crate::UseGroup)
3795 where
3796     V: Visit<'ast> + ?Sized,
3797 {
3798     skip!(node.brace_token);
3799     for el in Punctuated::pairs(&node.items) {
3800         let it = el.value();
3801         v.visit_use_tree(it);
3802     }
3803 }
3804 #[cfg(feature = "full")]
3805 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
3806 pub fn visit_use_name<'ast, V>(v: &mut V, node: &'ast crate::UseName)
3807 where
3808     V: Visit<'ast> + ?Sized,
3809 {
3810     v.visit_ident(&node.ident);
3811 }
3812 #[cfg(feature = "full")]
3813 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
3814 pub fn visit_use_path<'ast, V>(v: &mut V, node: &'ast crate::UsePath)
3815 where
3816     V: Visit<'ast> + ?Sized,
3817 {
3818     v.visit_ident(&node.ident);
3819     skip!(node.colon2_token);
3820     v.visit_use_tree(&*node.tree);
3821 }
3822 #[cfg(feature = "full")]
3823 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
3824 pub fn visit_use_rename<'ast, V>(v: &mut V, node: &'ast crate::UseRename)
3825 where
3826     V: Visit<'ast> + ?Sized,
3827 {
3828     v.visit_ident(&node.ident);
3829     skip!(node.as_token);
3830     v.visit_ident(&node.rename);
3831 }
3832 #[cfg(feature = "full")]
3833 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
3834 pub fn visit_use_tree<'ast, V>(v: &mut V, node: &'ast crate::UseTree)
3835 where
3836     V: Visit<'ast> + ?Sized,
3837 {
3838     match node {
3839         crate::UseTree::Path(_binding_0) => {
3840             v.visit_use_path(_binding_0);
3841         }
3842         crate::UseTree::Name(_binding_0) => {
3843             v.visit_use_name(_binding_0);
3844         }
3845         crate::UseTree::Rename(_binding_0) => {
3846             v.visit_use_rename(_binding_0);
3847         }
3848         crate::UseTree::Glob(_binding_0) => {
3849             v.visit_use_glob(_binding_0);
3850         }
3851         crate::UseTree::Group(_binding_0) => {
3852             v.visit_use_group(_binding_0);
3853         }
3854     }
3855 }
3856 #[cfg(feature = "full")]
3857 #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
3858 pub fn visit_variadic<'ast, V>(v: &mut V, node: &'ast crate::Variadic)
3859 where
3860     V: Visit<'ast> + ?Sized,
3861 {
3862     for it in &node.attrs {
3863         v.visit_attribute(it);
3864     }
3865     if let Some(it) = &node.pat {
3866         v.visit_pat(&*(it).0);
3867         skip!((it).1);
3868     }
3869     skip!(node.dots);
3870     skip!(node.comma);
3871 }
3872 #[cfg(any(feature = "derive", feature = "full"))]
3873 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
3874 pub fn visit_variant<'ast, V>(v: &mut V, node: &'ast crate::Variant)
3875 where
3876     V: Visit<'ast> + ?Sized,
3877 {
3878     for it in &node.attrs {
3879         v.visit_attribute(it);
3880     }
3881     v.visit_ident(&node.ident);
3882     v.visit_fields(&node.fields);
3883     if let Some(it) = &node.discriminant {
3884         skip!((it).0);
3885         v.visit_expr(&(it).1);
3886     }
3887 }
3888 #[cfg(any(feature = "derive", feature = "full"))]
3889 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
3890 pub fn visit_vis_restricted<'ast, V>(v: &mut V, node: &'ast crate::VisRestricted)
3891 where
3892     V: Visit<'ast> + ?Sized,
3893 {
3894     skip!(node.pub_token);
3895     skip!(node.paren_token);
3896     skip!(node.in_token);
3897     v.visit_path(&*node.path);
3898 }
3899 #[cfg(any(feature = "derive", feature = "full"))]
3900 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
3901 pub fn visit_visibility<'ast, V>(v: &mut V, node: &'ast crate::Visibility)
3902 where
3903     V: Visit<'ast> + ?Sized,
3904 {
3905     match node {
3906         crate::Visibility::Public(_binding_0) => {
3907             skip!(_binding_0);
3908         }
3909         crate::Visibility::Restricted(_binding_0) => {
3910             v.visit_vis_restricted(_binding_0);
3911         }
3912         crate::Visibility::Inherited => {}
3913     }
3914 }
3915 #[cfg(any(feature = "derive", feature = "full"))]
3916 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
3917 pub fn visit_where_clause<'ast, V>(v: &mut V, node: &'ast crate::WhereClause)
3918 where
3919     V: Visit<'ast> + ?Sized,
3920 {
3921     skip!(node.where_token);
3922     for el in Punctuated::pairs(&node.predicates) {
3923         let it = el.value();
3924         v.visit_where_predicate(it);
3925     }
3926 }
3927 #[cfg(any(feature = "derive", feature = "full"))]
3928 #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
3929 pub fn visit_where_predicate<'ast, V>(v: &mut V, node: &'ast crate::WherePredicate)
3930 where
3931     V: Visit<'ast> + ?Sized,
3932 {
3933     match node {
3934         crate::WherePredicate::Lifetime(_binding_0) => {
3935             v.visit_predicate_lifetime(_binding_0);
3936         }
3937         crate::WherePredicate::Type(_binding_0) => {
3938             v.visit_predicate_type(_binding_0);
3939         }
3940     }
3941 }
3942