Skip to main content

syn/gen/
visit.rs

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