Skip to main content

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