syn/gen/
fold.rs

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