• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #[cfg(any(feature = "full", feature = "derive"))]
6 use crate::gen::helper::fold::*;
7 #[cfg(any(feature = "full", feature = "derive"))]
8 use crate::token::{Brace, Bracket, Group, Paren};
9 use crate::*;
10 use proc_macro2::Span;
11 #[cfg(feature = "full")]
12 macro_rules! full {
13     ($e:expr) => {
14         $e
15     };
16 }
17 #[cfg(all(feature = "derive", not(feature = "full")))]
18 macro_rules! full {
19     ($e:expr) => {
20         unreachable!()
21     };
22 }
23 /// Syntax tree traversal to transform the nodes of an owned syntax tree.
24 ///
25 /// See the [module documentation] for details.
26 ///
27 /// [module documentation]: self
28 ///
29 /// *This trait is available if Syn is built with the `"fold"` feature.*
30 pub trait Fold {
31     #[cfg(any(feature = "derive", feature = "full"))]
fold_abi(&mut self, i: Abi) -> Abi32     fn fold_abi(&mut self, i: Abi) -> Abi {
33         fold_abi(self, i)
34     }
35     #[cfg(any(feature = "derive", feature = "full"))]
fold_angle_bracketed_generic_arguments( &mut self, i: AngleBracketedGenericArguments, ) -> AngleBracketedGenericArguments36     fn fold_angle_bracketed_generic_arguments(
37         &mut self,
38         i: AngleBracketedGenericArguments,
39     ) -> AngleBracketedGenericArguments {
40         fold_angle_bracketed_generic_arguments(self, i)
41     }
42     #[cfg(feature = "full")]
fold_arm(&mut self, i: Arm) -> Arm43     fn fold_arm(&mut self, i: Arm) -> Arm {
44         fold_arm(self, i)
45     }
46     #[cfg(any(feature = "derive", feature = "full"))]
fold_attr_style(&mut self, i: AttrStyle) -> AttrStyle47     fn fold_attr_style(&mut self, i: AttrStyle) -> AttrStyle {
48         fold_attr_style(self, i)
49     }
50     #[cfg(any(feature = "derive", feature = "full"))]
fold_attribute(&mut self, i: Attribute) -> Attribute51     fn fold_attribute(&mut self, i: Attribute) -> Attribute {
52         fold_attribute(self, i)
53     }
54     #[cfg(any(feature = "derive", feature = "full"))]
fold_bare_fn_arg(&mut self, i: BareFnArg) -> BareFnArg55     fn fold_bare_fn_arg(&mut self, i: BareFnArg) -> BareFnArg {
56         fold_bare_fn_arg(self, i)
57     }
58     #[cfg(any(feature = "derive", feature = "full"))]
fold_bin_op(&mut self, i: BinOp) -> BinOp59     fn fold_bin_op(&mut self, i: BinOp) -> BinOp {
60         fold_bin_op(self, i)
61     }
62     #[cfg(any(feature = "derive", feature = "full"))]
fold_binding(&mut self, i: Binding) -> Binding63     fn fold_binding(&mut self, i: Binding) -> Binding {
64         fold_binding(self, i)
65     }
66     #[cfg(feature = "full")]
fold_block(&mut self, i: Block) -> Block67     fn fold_block(&mut self, i: Block) -> Block {
68         fold_block(self, i)
69     }
70     #[cfg(any(feature = "derive", feature = "full"))]
fold_bound_lifetimes(&mut self, i: BoundLifetimes) -> BoundLifetimes71     fn fold_bound_lifetimes(&mut self, i: BoundLifetimes) -> BoundLifetimes {
72         fold_bound_lifetimes(self, i)
73     }
74     #[cfg(any(feature = "derive", feature = "full"))]
fold_const_param(&mut self, i: ConstParam) -> ConstParam75     fn fold_const_param(&mut self, i: ConstParam) -> ConstParam {
76         fold_const_param(self, i)
77     }
78     #[cfg(any(feature = "derive", feature = "full"))]
fold_constraint(&mut self, i: Constraint) -> Constraint79     fn fold_constraint(&mut self, i: Constraint) -> Constraint {
80         fold_constraint(self, i)
81     }
82     #[cfg(feature = "derive")]
fold_data(&mut self, i: Data) -> Data83     fn fold_data(&mut self, i: Data) -> Data {
84         fold_data(self, i)
85     }
86     #[cfg(feature = "derive")]
fold_data_enum(&mut self, i: DataEnum) -> DataEnum87     fn fold_data_enum(&mut self, i: DataEnum) -> DataEnum {
88         fold_data_enum(self, i)
89     }
90     #[cfg(feature = "derive")]
fold_data_struct(&mut self, i: DataStruct) -> DataStruct91     fn fold_data_struct(&mut self, i: DataStruct) -> DataStruct {
92         fold_data_struct(self, i)
93     }
94     #[cfg(feature = "derive")]
fold_data_union(&mut self, i: DataUnion) -> DataUnion95     fn fold_data_union(&mut self, i: DataUnion) -> DataUnion {
96         fold_data_union(self, i)
97     }
98     #[cfg(feature = "derive")]
fold_derive_input(&mut self, i: DeriveInput) -> DeriveInput99     fn fold_derive_input(&mut self, i: DeriveInput) -> DeriveInput {
100         fold_derive_input(self, i)
101     }
102     #[cfg(any(feature = "derive", feature = "full"))]
fold_expr(&mut self, i: Expr) -> Expr103     fn fold_expr(&mut self, i: Expr) -> Expr {
104         fold_expr(self, i)
105     }
106     #[cfg(feature = "full")]
fold_expr_array(&mut self, i: ExprArray) -> ExprArray107     fn fold_expr_array(&mut self, i: ExprArray) -> ExprArray {
108         fold_expr_array(self, i)
109     }
110     #[cfg(feature = "full")]
fold_expr_assign(&mut self, i: ExprAssign) -> ExprAssign111     fn fold_expr_assign(&mut self, i: ExprAssign) -> ExprAssign {
112         fold_expr_assign(self, i)
113     }
114     #[cfg(feature = "full")]
fold_expr_assign_op(&mut self, i: ExprAssignOp) -> ExprAssignOp115     fn fold_expr_assign_op(&mut self, i: ExprAssignOp) -> ExprAssignOp {
116         fold_expr_assign_op(self, i)
117     }
118     #[cfg(feature = "full")]
fold_expr_async(&mut self, i: ExprAsync) -> ExprAsync119     fn fold_expr_async(&mut self, i: ExprAsync) -> ExprAsync {
120         fold_expr_async(self, i)
121     }
122     #[cfg(feature = "full")]
fold_expr_await(&mut self, i: ExprAwait) -> ExprAwait123     fn fold_expr_await(&mut self, i: ExprAwait) -> ExprAwait {
124         fold_expr_await(self, i)
125     }
126     #[cfg(any(feature = "derive", feature = "full"))]
fold_expr_binary(&mut self, i: ExprBinary) -> ExprBinary127     fn fold_expr_binary(&mut self, i: ExprBinary) -> ExprBinary {
128         fold_expr_binary(self, i)
129     }
130     #[cfg(feature = "full")]
fold_expr_block(&mut self, i: ExprBlock) -> ExprBlock131     fn fold_expr_block(&mut self, i: ExprBlock) -> ExprBlock {
132         fold_expr_block(self, i)
133     }
134     #[cfg(feature = "full")]
fold_expr_box(&mut self, i: ExprBox) -> ExprBox135     fn fold_expr_box(&mut self, i: ExprBox) -> ExprBox {
136         fold_expr_box(self, i)
137     }
138     #[cfg(feature = "full")]
fold_expr_break(&mut self, i: ExprBreak) -> ExprBreak139     fn fold_expr_break(&mut self, i: ExprBreak) -> ExprBreak {
140         fold_expr_break(self, i)
141     }
142     #[cfg(any(feature = "derive", feature = "full"))]
fold_expr_call(&mut self, i: ExprCall) -> ExprCall143     fn fold_expr_call(&mut self, i: ExprCall) -> ExprCall {
144         fold_expr_call(self, i)
145     }
146     #[cfg(any(feature = "derive", feature = "full"))]
fold_expr_cast(&mut self, i: ExprCast) -> ExprCast147     fn fold_expr_cast(&mut self, i: ExprCast) -> ExprCast {
148         fold_expr_cast(self, i)
149     }
150     #[cfg(feature = "full")]
fold_expr_closure(&mut self, i: ExprClosure) -> ExprClosure151     fn fold_expr_closure(&mut self, i: ExprClosure) -> ExprClosure {
152         fold_expr_closure(self, i)
153     }
154     #[cfg(feature = "full")]
fold_expr_continue(&mut self, i: ExprContinue) -> ExprContinue155     fn fold_expr_continue(&mut self, i: ExprContinue) -> ExprContinue {
156         fold_expr_continue(self, i)
157     }
158     #[cfg(any(feature = "derive", feature = "full"))]
fold_expr_field(&mut self, i: ExprField) -> ExprField159     fn fold_expr_field(&mut self, i: ExprField) -> ExprField {
160         fold_expr_field(self, i)
161     }
162     #[cfg(feature = "full")]
fold_expr_for_loop(&mut self, i: ExprForLoop) -> ExprForLoop163     fn fold_expr_for_loop(&mut self, i: ExprForLoop) -> ExprForLoop {
164         fold_expr_for_loop(self, i)
165     }
166     #[cfg(feature = "full")]
fold_expr_group(&mut self, i: ExprGroup) -> ExprGroup167     fn fold_expr_group(&mut self, i: ExprGroup) -> ExprGroup {
168         fold_expr_group(self, i)
169     }
170     #[cfg(feature = "full")]
fold_expr_if(&mut self, i: ExprIf) -> ExprIf171     fn fold_expr_if(&mut self, i: ExprIf) -> ExprIf {
172         fold_expr_if(self, i)
173     }
174     #[cfg(any(feature = "derive", feature = "full"))]
fold_expr_index(&mut self, i: ExprIndex) -> ExprIndex175     fn fold_expr_index(&mut self, i: ExprIndex) -> ExprIndex {
176         fold_expr_index(self, i)
177     }
178     #[cfg(feature = "full")]
fold_expr_let(&mut self, i: ExprLet) -> ExprLet179     fn fold_expr_let(&mut self, i: ExprLet) -> ExprLet {
180         fold_expr_let(self, i)
181     }
182     #[cfg(any(feature = "derive", feature = "full"))]
fold_expr_lit(&mut self, i: ExprLit) -> ExprLit183     fn fold_expr_lit(&mut self, i: ExprLit) -> ExprLit {
184         fold_expr_lit(self, i)
185     }
186     #[cfg(feature = "full")]
fold_expr_loop(&mut self, i: ExprLoop) -> ExprLoop187     fn fold_expr_loop(&mut self, i: ExprLoop) -> ExprLoop {
188         fold_expr_loop(self, i)
189     }
190     #[cfg(feature = "full")]
fold_expr_macro(&mut self, i: ExprMacro) -> ExprMacro191     fn fold_expr_macro(&mut self, i: ExprMacro) -> ExprMacro {
192         fold_expr_macro(self, i)
193     }
194     #[cfg(feature = "full")]
fold_expr_match(&mut self, i: ExprMatch) -> ExprMatch195     fn fold_expr_match(&mut self, i: ExprMatch) -> ExprMatch {
196         fold_expr_match(self, i)
197     }
198     #[cfg(feature = "full")]
fold_expr_method_call(&mut self, i: ExprMethodCall) -> ExprMethodCall199     fn fold_expr_method_call(&mut self, i: ExprMethodCall) -> ExprMethodCall {
200         fold_expr_method_call(self, i)
201     }
202     #[cfg(any(feature = "derive", feature = "full"))]
fold_expr_paren(&mut self, i: ExprParen) -> ExprParen203     fn fold_expr_paren(&mut self, i: ExprParen) -> ExprParen {
204         fold_expr_paren(self, i)
205     }
206     #[cfg(any(feature = "derive", feature = "full"))]
fold_expr_path(&mut self, i: ExprPath) -> ExprPath207     fn fold_expr_path(&mut self, i: ExprPath) -> ExprPath {
208         fold_expr_path(self, i)
209     }
210     #[cfg(feature = "full")]
fold_expr_range(&mut self, i: ExprRange) -> ExprRange211     fn fold_expr_range(&mut self, i: ExprRange) -> ExprRange {
212         fold_expr_range(self, i)
213     }
214     #[cfg(feature = "full")]
fold_expr_reference(&mut self, i: ExprReference) -> ExprReference215     fn fold_expr_reference(&mut self, i: ExprReference) -> ExprReference {
216         fold_expr_reference(self, i)
217     }
218     #[cfg(feature = "full")]
fold_expr_repeat(&mut self, i: ExprRepeat) -> ExprRepeat219     fn fold_expr_repeat(&mut self, i: ExprRepeat) -> ExprRepeat {
220         fold_expr_repeat(self, i)
221     }
222     #[cfg(feature = "full")]
fold_expr_return(&mut self, i: ExprReturn) -> ExprReturn223     fn fold_expr_return(&mut self, i: ExprReturn) -> ExprReturn {
224         fold_expr_return(self, i)
225     }
226     #[cfg(feature = "full")]
fold_expr_struct(&mut self, i: ExprStruct) -> ExprStruct227     fn fold_expr_struct(&mut self, i: ExprStruct) -> ExprStruct {
228         fold_expr_struct(self, i)
229     }
230     #[cfg(feature = "full")]
fold_expr_try(&mut self, i: ExprTry) -> ExprTry231     fn fold_expr_try(&mut self, i: ExprTry) -> ExprTry {
232         fold_expr_try(self, i)
233     }
234     #[cfg(feature = "full")]
fold_expr_try_block(&mut self, i: ExprTryBlock) -> ExprTryBlock235     fn fold_expr_try_block(&mut self, i: ExprTryBlock) -> ExprTryBlock {
236         fold_expr_try_block(self, i)
237     }
238     #[cfg(feature = "full")]
fold_expr_tuple(&mut self, i: ExprTuple) -> ExprTuple239     fn fold_expr_tuple(&mut self, i: ExprTuple) -> ExprTuple {
240         fold_expr_tuple(self, i)
241     }
242     #[cfg(feature = "full")]
fold_expr_type(&mut self, i: ExprType) -> ExprType243     fn fold_expr_type(&mut self, i: ExprType) -> ExprType {
244         fold_expr_type(self, i)
245     }
246     #[cfg(any(feature = "derive", feature = "full"))]
fold_expr_unary(&mut self, i: ExprUnary) -> ExprUnary247     fn fold_expr_unary(&mut self, i: ExprUnary) -> ExprUnary {
248         fold_expr_unary(self, i)
249     }
250     #[cfg(feature = "full")]
fold_expr_unsafe(&mut self, i: ExprUnsafe) -> ExprUnsafe251     fn fold_expr_unsafe(&mut self, i: ExprUnsafe) -> ExprUnsafe {
252         fold_expr_unsafe(self, i)
253     }
254     #[cfg(feature = "full")]
fold_expr_while(&mut self, i: ExprWhile) -> ExprWhile255     fn fold_expr_while(&mut self, i: ExprWhile) -> ExprWhile {
256         fold_expr_while(self, i)
257     }
258     #[cfg(feature = "full")]
fold_expr_yield(&mut self, i: ExprYield) -> ExprYield259     fn fold_expr_yield(&mut self, i: ExprYield) -> ExprYield {
260         fold_expr_yield(self, i)
261     }
262     #[cfg(any(feature = "derive", feature = "full"))]
fold_field(&mut self, i: Field) -> Field263     fn fold_field(&mut self, i: Field) -> Field {
264         fold_field(self, i)
265     }
266     #[cfg(feature = "full")]
fold_field_pat(&mut self, i: FieldPat) -> FieldPat267     fn fold_field_pat(&mut self, i: FieldPat) -> FieldPat {
268         fold_field_pat(self, i)
269     }
270     #[cfg(feature = "full")]
fold_field_value(&mut self, i: FieldValue) -> FieldValue271     fn fold_field_value(&mut self, i: FieldValue) -> FieldValue {
272         fold_field_value(self, i)
273     }
274     #[cfg(any(feature = "derive", feature = "full"))]
fold_fields(&mut self, i: Fields) -> Fields275     fn fold_fields(&mut self, i: Fields) -> Fields {
276         fold_fields(self, i)
277     }
278     #[cfg(any(feature = "derive", feature = "full"))]
fold_fields_named(&mut self, i: FieldsNamed) -> FieldsNamed279     fn fold_fields_named(&mut self, i: FieldsNamed) -> FieldsNamed {
280         fold_fields_named(self, i)
281     }
282     #[cfg(any(feature = "derive", feature = "full"))]
fold_fields_unnamed(&mut self, i: FieldsUnnamed) -> FieldsUnnamed283     fn fold_fields_unnamed(&mut self, i: FieldsUnnamed) -> FieldsUnnamed {
284         fold_fields_unnamed(self, i)
285     }
286     #[cfg(feature = "full")]
fold_file(&mut self, i: File) -> File287     fn fold_file(&mut self, i: File) -> File {
288         fold_file(self, i)
289     }
290     #[cfg(feature = "full")]
fold_fn_arg(&mut self, i: FnArg) -> FnArg291     fn fold_fn_arg(&mut self, i: FnArg) -> FnArg {
292         fold_fn_arg(self, i)
293     }
294     #[cfg(feature = "full")]
fold_foreign_item(&mut self, i: ForeignItem) -> ForeignItem295     fn fold_foreign_item(&mut self, i: ForeignItem) -> ForeignItem {
296         fold_foreign_item(self, i)
297     }
298     #[cfg(feature = "full")]
fold_foreign_item_fn(&mut self, i: ForeignItemFn) -> ForeignItemFn299     fn fold_foreign_item_fn(&mut self, i: ForeignItemFn) -> ForeignItemFn {
300         fold_foreign_item_fn(self, i)
301     }
302     #[cfg(feature = "full")]
fold_foreign_item_macro(&mut self, i: ForeignItemMacro) -> ForeignItemMacro303     fn fold_foreign_item_macro(&mut self, i: ForeignItemMacro) -> ForeignItemMacro {
304         fold_foreign_item_macro(self, i)
305     }
306     #[cfg(feature = "full")]
fold_foreign_item_static(&mut self, i: ForeignItemStatic) -> ForeignItemStatic307     fn fold_foreign_item_static(&mut self, i: ForeignItemStatic) -> ForeignItemStatic {
308         fold_foreign_item_static(self, i)
309     }
310     #[cfg(feature = "full")]
fold_foreign_item_type(&mut self, i: ForeignItemType) -> ForeignItemType311     fn fold_foreign_item_type(&mut self, i: ForeignItemType) -> ForeignItemType {
312         fold_foreign_item_type(self, i)
313     }
314     #[cfg(any(feature = "derive", feature = "full"))]
fold_generic_argument(&mut self, i: GenericArgument) -> GenericArgument315     fn fold_generic_argument(&mut self, i: GenericArgument) -> GenericArgument {
316         fold_generic_argument(self, i)
317     }
318     #[cfg(feature = "full")]
fold_generic_method_argument(&mut self, i: GenericMethodArgument) -> GenericMethodArgument319     fn fold_generic_method_argument(&mut self, i: GenericMethodArgument) -> GenericMethodArgument {
320         fold_generic_method_argument(self, i)
321     }
322     #[cfg(any(feature = "derive", feature = "full"))]
fold_generic_param(&mut self, i: GenericParam) -> GenericParam323     fn fold_generic_param(&mut self, i: GenericParam) -> GenericParam {
324         fold_generic_param(self, i)
325     }
326     #[cfg(any(feature = "derive", feature = "full"))]
fold_generics(&mut self, i: Generics) -> Generics327     fn fold_generics(&mut self, i: Generics) -> Generics {
328         fold_generics(self, i)
329     }
fold_ident(&mut self, i: Ident) -> Ident330     fn fold_ident(&mut self, i: Ident) -> Ident {
331         fold_ident(self, i)
332     }
333     #[cfg(feature = "full")]
fold_impl_item(&mut self, i: ImplItem) -> ImplItem334     fn fold_impl_item(&mut self, i: ImplItem) -> ImplItem {
335         fold_impl_item(self, i)
336     }
337     #[cfg(feature = "full")]
fold_impl_item_const(&mut self, i: ImplItemConst) -> ImplItemConst338     fn fold_impl_item_const(&mut self, i: ImplItemConst) -> ImplItemConst {
339         fold_impl_item_const(self, i)
340     }
341     #[cfg(feature = "full")]
fold_impl_item_macro(&mut self, i: ImplItemMacro) -> ImplItemMacro342     fn fold_impl_item_macro(&mut self, i: ImplItemMacro) -> ImplItemMacro {
343         fold_impl_item_macro(self, i)
344     }
345     #[cfg(feature = "full")]
fold_impl_item_method(&mut self, i: ImplItemMethod) -> ImplItemMethod346     fn fold_impl_item_method(&mut self, i: ImplItemMethod) -> ImplItemMethod {
347         fold_impl_item_method(self, i)
348     }
349     #[cfg(feature = "full")]
fold_impl_item_type(&mut self, i: ImplItemType) -> ImplItemType350     fn fold_impl_item_type(&mut self, i: ImplItemType) -> ImplItemType {
351         fold_impl_item_type(self, i)
352     }
353     #[cfg(any(feature = "derive", feature = "full"))]
fold_index(&mut self, i: Index) -> Index354     fn fold_index(&mut self, i: Index) -> Index {
355         fold_index(self, i)
356     }
357     #[cfg(feature = "full")]
fold_item(&mut self, i: Item) -> Item358     fn fold_item(&mut self, i: Item) -> Item {
359         fold_item(self, i)
360     }
361     #[cfg(feature = "full")]
fold_item_const(&mut self, i: ItemConst) -> ItemConst362     fn fold_item_const(&mut self, i: ItemConst) -> ItemConst {
363         fold_item_const(self, i)
364     }
365     #[cfg(feature = "full")]
fold_item_enum(&mut self, i: ItemEnum) -> ItemEnum366     fn fold_item_enum(&mut self, i: ItemEnum) -> ItemEnum {
367         fold_item_enum(self, i)
368     }
369     #[cfg(feature = "full")]
fold_item_extern_crate(&mut self, i: ItemExternCrate) -> ItemExternCrate370     fn fold_item_extern_crate(&mut self, i: ItemExternCrate) -> ItemExternCrate {
371         fold_item_extern_crate(self, i)
372     }
373     #[cfg(feature = "full")]
fold_item_fn(&mut self, i: ItemFn) -> ItemFn374     fn fold_item_fn(&mut self, i: ItemFn) -> ItemFn {
375         fold_item_fn(self, i)
376     }
377     #[cfg(feature = "full")]
fold_item_foreign_mod(&mut self, i: ItemForeignMod) -> ItemForeignMod378     fn fold_item_foreign_mod(&mut self, i: ItemForeignMod) -> ItemForeignMod {
379         fold_item_foreign_mod(self, i)
380     }
381     #[cfg(feature = "full")]
fold_item_impl(&mut self, i: ItemImpl) -> ItemImpl382     fn fold_item_impl(&mut self, i: ItemImpl) -> ItemImpl {
383         fold_item_impl(self, i)
384     }
385     #[cfg(feature = "full")]
fold_item_macro(&mut self, i: ItemMacro) -> ItemMacro386     fn fold_item_macro(&mut self, i: ItemMacro) -> ItemMacro {
387         fold_item_macro(self, i)
388     }
389     #[cfg(feature = "full")]
fold_item_macro2(&mut self, i: ItemMacro2) -> ItemMacro2390     fn fold_item_macro2(&mut self, i: ItemMacro2) -> ItemMacro2 {
391         fold_item_macro2(self, i)
392     }
393     #[cfg(feature = "full")]
fold_item_mod(&mut self, i: ItemMod) -> ItemMod394     fn fold_item_mod(&mut self, i: ItemMod) -> ItemMod {
395         fold_item_mod(self, i)
396     }
397     #[cfg(feature = "full")]
fold_item_static(&mut self, i: ItemStatic) -> ItemStatic398     fn fold_item_static(&mut self, i: ItemStatic) -> ItemStatic {
399         fold_item_static(self, i)
400     }
401     #[cfg(feature = "full")]
fold_item_struct(&mut self, i: ItemStruct) -> ItemStruct402     fn fold_item_struct(&mut self, i: ItemStruct) -> ItemStruct {
403         fold_item_struct(self, i)
404     }
405     #[cfg(feature = "full")]
fold_item_trait(&mut self, i: ItemTrait) -> ItemTrait406     fn fold_item_trait(&mut self, i: ItemTrait) -> ItemTrait {
407         fold_item_trait(self, i)
408     }
409     #[cfg(feature = "full")]
fold_item_trait_alias(&mut self, i: ItemTraitAlias) -> ItemTraitAlias410     fn fold_item_trait_alias(&mut self, i: ItemTraitAlias) -> ItemTraitAlias {
411         fold_item_trait_alias(self, i)
412     }
413     #[cfg(feature = "full")]
fold_item_type(&mut self, i: ItemType) -> ItemType414     fn fold_item_type(&mut self, i: ItemType) -> ItemType {
415         fold_item_type(self, i)
416     }
417     #[cfg(feature = "full")]
fold_item_union(&mut self, i: ItemUnion) -> ItemUnion418     fn fold_item_union(&mut self, i: ItemUnion) -> ItemUnion {
419         fold_item_union(self, i)
420     }
421     #[cfg(feature = "full")]
fold_item_use(&mut self, i: ItemUse) -> ItemUse422     fn fold_item_use(&mut self, i: ItemUse) -> ItemUse {
423         fold_item_use(self, i)
424     }
425     #[cfg(feature = "full")]
fold_label(&mut self, i: Label) -> Label426     fn fold_label(&mut self, i: Label) -> Label {
427         fold_label(self, i)
428     }
fold_lifetime(&mut self, i: Lifetime) -> Lifetime429     fn fold_lifetime(&mut self, i: Lifetime) -> Lifetime {
430         fold_lifetime(self, i)
431     }
432     #[cfg(any(feature = "derive", feature = "full"))]
fold_lifetime_def(&mut self, i: LifetimeDef) -> LifetimeDef433     fn fold_lifetime_def(&mut self, i: LifetimeDef) -> LifetimeDef {
434         fold_lifetime_def(self, i)
435     }
436     #[cfg(any(feature = "derive", feature = "full"))]
fold_lit(&mut self, i: Lit) -> Lit437     fn fold_lit(&mut self, i: Lit) -> Lit {
438         fold_lit(self, i)
439     }
440     #[cfg(any(feature = "derive", feature = "full"))]
fold_lit_bool(&mut self, i: LitBool) -> LitBool441     fn fold_lit_bool(&mut self, i: LitBool) -> LitBool {
442         fold_lit_bool(self, i)
443     }
444     #[cfg(any(feature = "derive", feature = "full"))]
fold_lit_byte(&mut self, i: LitByte) -> LitByte445     fn fold_lit_byte(&mut self, i: LitByte) -> LitByte {
446         fold_lit_byte(self, i)
447     }
448     #[cfg(any(feature = "derive", feature = "full"))]
fold_lit_byte_str(&mut self, i: LitByteStr) -> LitByteStr449     fn fold_lit_byte_str(&mut self, i: LitByteStr) -> LitByteStr {
450         fold_lit_byte_str(self, i)
451     }
452     #[cfg(any(feature = "derive", feature = "full"))]
fold_lit_char(&mut self, i: LitChar) -> LitChar453     fn fold_lit_char(&mut self, i: LitChar) -> LitChar {
454         fold_lit_char(self, i)
455     }
456     #[cfg(any(feature = "derive", feature = "full"))]
fold_lit_float(&mut self, i: LitFloat) -> LitFloat457     fn fold_lit_float(&mut self, i: LitFloat) -> LitFloat {
458         fold_lit_float(self, i)
459     }
460     #[cfg(any(feature = "derive", feature = "full"))]
fold_lit_int(&mut self, i: LitInt) -> LitInt461     fn fold_lit_int(&mut self, i: LitInt) -> LitInt {
462         fold_lit_int(self, i)
463     }
464     #[cfg(any(feature = "derive", feature = "full"))]
fold_lit_str(&mut self, i: LitStr) -> LitStr465     fn fold_lit_str(&mut self, i: LitStr) -> LitStr {
466         fold_lit_str(self, i)
467     }
468     #[cfg(feature = "full")]
fold_local(&mut self, i: Local) -> Local469     fn fold_local(&mut self, i: Local) -> Local {
470         fold_local(self, i)
471     }
472     #[cfg(any(feature = "derive", feature = "full"))]
fold_macro(&mut self, i: Macro) -> Macro473     fn fold_macro(&mut self, i: Macro) -> Macro {
474         fold_macro(self, i)
475     }
476     #[cfg(any(feature = "derive", feature = "full"))]
fold_macro_delimiter(&mut self, i: MacroDelimiter) -> MacroDelimiter477     fn fold_macro_delimiter(&mut self, i: MacroDelimiter) -> MacroDelimiter {
478         fold_macro_delimiter(self, i)
479     }
480     #[cfg(any(feature = "derive", feature = "full"))]
fold_member(&mut self, i: Member) -> Member481     fn fold_member(&mut self, i: Member) -> Member {
482         fold_member(self, i)
483     }
484     #[cfg(any(feature = "derive", feature = "full"))]
fold_meta(&mut self, i: Meta) -> Meta485     fn fold_meta(&mut self, i: Meta) -> Meta {
486         fold_meta(self, i)
487     }
488     #[cfg(any(feature = "derive", feature = "full"))]
fold_meta_list(&mut self, i: MetaList) -> MetaList489     fn fold_meta_list(&mut self, i: MetaList) -> MetaList {
490         fold_meta_list(self, i)
491     }
492     #[cfg(any(feature = "derive", feature = "full"))]
fold_meta_name_value(&mut self, i: MetaNameValue) -> MetaNameValue493     fn fold_meta_name_value(&mut self, i: MetaNameValue) -> MetaNameValue {
494         fold_meta_name_value(self, i)
495     }
496     #[cfg(feature = "full")]
fold_method_turbofish(&mut self, i: MethodTurbofish) -> MethodTurbofish497     fn fold_method_turbofish(&mut self, i: MethodTurbofish) -> MethodTurbofish {
498         fold_method_turbofish(self, i)
499     }
500     #[cfg(any(feature = "derive", feature = "full"))]
fold_nested_meta(&mut self, i: NestedMeta) -> NestedMeta501     fn fold_nested_meta(&mut self, i: NestedMeta) -> NestedMeta {
502         fold_nested_meta(self, i)
503     }
504     #[cfg(any(feature = "derive", feature = "full"))]
fold_parenthesized_generic_arguments( &mut self, i: ParenthesizedGenericArguments, ) -> ParenthesizedGenericArguments505     fn fold_parenthesized_generic_arguments(
506         &mut self,
507         i: ParenthesizedGenericArguments,
508     ) -> ParenthesizedGenericArguments {
509         fold_parenthesized_generic_arguments(self, i)
510     }
511     #[cfg(feature = "full")]
fold_pat(&mut self, i: Pat) -> Pat512     fn fold_pat(&mut self, i: Pat) -> Pat {
513         fold_pat(self, i)
514     }
515     #[cfg(feature = "full")]
fold_pat_box(&mut self, i: PatBox) -> PatBox516     fn fold_pat_box(&mut self, i: PatBox) -> PatBox {
517         fold_pat_box(self, i)
518     }
519     #[cfg(feature = "full")]
fold_pat_ident(&mut self, i: PatIdent) -> PatIdent520     fn fold_pat_ident(&mut self, i: PatIdent) -> PatIdent {
521         fold_pat_ident(self, i)
522     }
523     #[cfg(feature = "full")]
fold_pat_lit(&mut self, i: PatLit) -> PatLit524     fn fold_pat_lit(&mut self, i: PatLit) -> PatLit {
525         fold_pat_lit(self, i)
526     }
527     #[cfg(feature = "full")]
fold_pat_macro(&mut self, i: PatMacro) -> PatMacro528     fn fold_pat_macro(&mut self, i: PatMacro) -> PatMacro {
529         fold_pat_macro(self, i)
530     }
531     #[cfg(feature = "full")]
fold_pat_or(&mut self, i: PatOr) -> PatOr532     fn fold_pat_or(&mut self, i: PatOr) -> PatOr {
533         fold_pat_or(self, i)
534     }
535     #[cfg(feature = "full")]
fold_pat_path(&mut self, i: PatPath) -> PatPath536     fn fold_pat_path(&mut self, i: PatPath) -> PatPath {
537         fold_pat_path(self, i)
538     }
539     #[cfg(feature = "full")]
fold_pat_range(&mut self, i: PatRange) -> PatRange540     fn fold_pat_range(&mut self, i: PatRange) -> PatRange {
541         fold_pat_range(self, i)
542     }
543     #[cfg(feature = "full")]
fold_pat_reference(&mut self, i: PatReference) -> PatReference544     fn fold_pat_reference(&mut self, i: PatReference) -> PatReference {
545         fold_pat_reference(self, i)
546     }
547     #[cfg(feature = "full")]
fold_pat_rest(&mut self, i: PatRest) -> PatRest548     fn fold_pat_rest(&mut self, i: PatRest) -> PatRest {
549         fold_pat_rest(self, i)
550     }
551     #[cfg(feature = "full")]
fold_pat_slice(&mut self, i: PatSlice) -> PatSlice552     fn fold_pat_slice(&mut self, i: PatSlice) -> PatSlice {
553         fold_pat_slice(self, i)
554     }
555     #[cfg(feature = "full")]
fold_pat_struct(&mut self, i: PatStruct) -> PatStruct556     fn fold_pat_struct(&mut self, i: PatStruct) -> PatStruct {
557         fold_pat_struct(self, i)
558     }
559     #[cfg(feature = "full")]
fold_pat_tuple(&mut self, i: PatTuple) -> PatTuple560     fn fold_pat_tuple(&mut self, i: PatTuple) -> PatTuple {
561         fold_pat_tuple(self, i)
562     }
563     #[cfg(feature = "full")]
fold_pat_tuple_struct(&mut self, i: PatTupleStruct) -> PatTupleStruct564     fn fold_pat_tuple_struct(&mut self, i: PatTupleStruct) -> PatTupleStruct {
565         fold_pat_tuple_struct(self, i)
566     }
567     #[cfg(feature = "full")]
fold_pat_type(&mut self, i: PatType) -> PatType568     fn fold_pat_type(&mut self, i: PatType) -> PatType {
569         fold_pat_type(self, i)
570     }
571     #[cfg(feature = "full")]
fold_pat_wild(&mut self, i: PatWild) -> PatWild572     fn fold_pat_wild(&mut self, i: PatWild) -> PatWild {
573         fold_pat_wild(self, i)
574     }
575     #[cfg(any(feature = "derive", feature = "full"))]
fold_path(&mut self, i: Path) -> Path576     fn fold_path(&mut self, i: Path) -> Path {
577         fold_path(self, i)
578     }
579     #[cfg(any(feature = "derive", feature = "full"))]
fold_path_arguments(&mut self, i: PathArguments) -> PathArguments580     fn fold_path_arguments(&mut self, i: PathArguments) -> PathArguments {
581         fold_path_arguments(self, i)
582     }
583     #[cfg(any(feature = "derive", feature = "full"))]
fold_path_segment(&mut self, i: PathSegment) -> PathSegment584     fn fold_path_segment(&mut self, i: PathSegment) -> PathSegment {
585         fold_path_segment(self, i)
586     }
587     #[cfg(any(feature = "derive", feature = "full"))]
fold_predicate_eq(&mut self, i: PredicateEq) -> PredicateEq588     fn fold_predicate_eq(&mut self, i: PredicateEq) -> PredicateEq {
589         fold_predicate_eq(self, i)
590     }
591     #[cfg(any(feature = "derive", feature = "full"))]
fold_predicate_lifetime(&mut self, i: PredicateLifetime) -> PredicateLifetime592     fn fold_predicate_lifetime(&mut self, i: PredicateLifetime) -> PredicateLifetime {
593         fold_predicate_lifetime(self, i)
594     }
595     #[cfg(any(feature = "derive", feature = "full"))]
fold_predicate_type(&mut self, i: PredicateType) -> PredicateType596     fn fold_predicate_type(&mut self, i: PredicateType) -> PredicateType {
597         fold_predicate_type(self, i)
598     }
599     #[cfg(any(feature = "derive", feature = "full"))]
fold_qself(&mut self, i: QSelf) -> QSelf600     fn fold_qself(&mut self, i: QSelf) -> QSelf {
601         fold_qself(self, i)
602     }
603     #[cfg(feature = "full")]
fold_range_limits(&mut self, i: RangeLimits) -> RangeLimits604     fn fold_range_limits(&mut self, i: RangeLimits) -> RangeLimits {
605         fold_range_limits(self, i)
606     }
607     #[cfg(feature = "full")]
fold_receiver(&mut self, i: Receiver) -> Receiver608     fn fold_receiver(&mut self, i: Receiver) -> Receiver {
609         fold_receiver(self, i)
610     }
611     #[cfg(any(feature = "derive", feature = "full"))]
fold_return_type(&mut self, i: ReturnType) -> ReturnType612     fn fold_return_type(&mut self, i: ReturnType) -> ReturnType {
613         fold_return_type(self, i)
614     }
615     #[cfg(feature = "full")]
fold_signature(&mut self, i: Signature) -> Signature616     fn fold_signature(&mut self, i: Signature) -> Signature {
617         fold_signature(self, i)
618     }
fold_span(&mut self, i: Span) -> Span619     fn fold_span(&mut self, i: Span) -> Span {
620         fold_span(self, i)
621     }
622     #[cfg(feature = "full")]
fold_stmt(&mut self, i: Stmt) -> Stmt623     fn fold_stmt(&mut self, i: Stmt) -> Stmt {
624         fold_stmt(self, i)
625     }
626     #[cfg(any(feature = "derive", feature = "full"))]
fold_trait_bound(&mut self, i: TraitBound) -> TraitBound627     fn fold_trait_bound(&mut self, i: TraitBound) -> TraitBound {
628         fold_trait_bound(self, i)
629     }
630     #[cfg(any(feature = "derive", feature = "full"))]
fold_trait_bound_modifier(&mut self, i: TraitBoundModifier) -> TraitBoundModifier631     fn fold_trait_bound_modifier(&mut self, i: TraitBoundModifier) -> TraitBoundModifier {
632         fold_trait_bound_modifier(self, i)
633     }
634     #[cfg(feature = "full")]
fold_trait_item(&mut self, i: TraitItem) -> TraitItem635     fn fold_trait_item(&mut self, i: TraitItem) -> TraitItem {
636         fold_trait_item(self, i)
637     }
638     #[cfg(feature = "full")]
fold_trait_item_const(&mut self, i: TraitItemConst) -> TraitItemConst639     fn fold_trait_item_const(&mut self, i: TraitItemConst) -> TraitItemConst {
640         fold_trait_item_const(self, i)
641     }
642     #[cfg(feature = "full")]
fold_trait_item_macro(&mut self, i: TraitItemMacro) -> TraitItemMacro643     fn fold_trait_item_macro(&mut self, i: TraitItemMacro) -> TraitItemMacro {
644         fold_trait_item_macro(self, i)
645     }
646     #[cfg(feature = "full")]
fold_trait_item_method(&mut self, i: TraitItemMethod) -> TraitItemMethod647     fn fold_trait_item_method(&mut self, i: TraitItemMethod) -> TraitItemMethod {
648         fold_trait_item_method(self, i)
649     }
650     #[cfg(feature = "full")]
fold_trait_item_type(&mut self, i: TraitItemType) -> TraitItemType651     fn fold_trait_item_type(&mut self, i: TraitItemType) -> TraitItemType {
652         fold_trait_item_type(self, i)
653     }
654     #[cfg(any(feature = "derive", feature = "full"))]
fold_type(&mut self, i: Type) -> Type655     fn fold_type(&mut self, i: Type) -> Type {
656         fold_type(self, i)
657     }
658     #[cfg(any(feature = "derive", feature = "full"))]
fold_type_array(&mut self, i: TypeArray) -> TypeArray659     fn fold_type_array(&mut self, i: TypeArray) -> TypeArray {
660         fold_type_array(self, i)
661     }
662     #[cfg(any(feature = "derive", feature = "full"))]
fold_type_bare_fn(&mut self, i: TypeBareFn) -> TypeBareFn663     fn fold_type_bare_fn(&mut self, i: TypeBareFn) -> TypeBareFn {
664         fold_type_bare_fn(self, i)
665     }
666     #[cfg(any(feature = "derive", feature = "full"))]
fold_type_group(&mut self, i: TypeGroup) -> TypeGroup667     fn fold_type_group(&mut self, i: TypeGroup) -> TypeGroup {
668         fold_type_group(self, i)
669     }
670     #[cfg(any(feature = "derive", feature = "full"))]
fold_type_impl_trait(&mut self, i: TypeImplTrait) -> TypeImplTrait671     fn fold_type_impl_trait(&mut self, i: TypeImplTrait) -> TypeImplTrait {
672         fold_type_impl_trait(self, i)
673     }
674     #[cfg(any(feature = "derive", feature = "full"))]
fold_type_infer(&mut self, i: TypeInfer) -> TypeInfer675     fn fold_type_infer(&mut self, i: TypeInfer) -> TypeInfer {
676         fold_type_infer(self, i)
677     }
678     #[cfg(any(feature = "derive", feature = "full"))]
fold_type_macro(&mut self, i: TypeMacro) -> TypeMacro679     fn fold_type_macro(&mut self, i: TypeMacro) -> TypeMacro {
680         fold_type_macro(self, i)
681     }
682     #[cfg(any(feature = "derive", feature = "full"))]
fold_type_never(&mut self, i: TypeNever) -> TypeNever683     fn fold_type_never(&mut self, i: TypeNever) -> TypeNever {
684         fold_type_never(self, i)
685     }
686     #[cfg(any(feature = "derive", feature = "full"))]
fold_type_param(&mut self, i: TypeParam) -> TypeParam687     fn fold_type_param(&mut self, i: TypeParam) -> TypeParam {
688         fold_type_param(self, i)
689     }
690     #[cfg(any(feature = "derive", feature = "full"))]
fold_type_param_bound(&mut self, i: TypeParamBound) -> TypeParamBound691     fn fold_type_param_bound(&mut self, i: TypeParamBound) -> TypeParamBound {
692         fold_type_param_bound(self, i)
693     }
694     #[cfg(any(feature = "derive", feature = "full"))]
fold_type_paren(&mut self, i: TypeParen) -> TypeParen695     fn fold_type_paren(&mut self, i: TypeParen) -> TypeParen {
696         fold_type_paren(self, i)
697     }
698     #[cfg(any(feature = "derive", feature = "full"))]
fold_type_path(&mut self, i: TypePath) -> TypePath699     fn fold_type_path(&mut self, i: TypePath) -> TypePath {
700         fold_type_path(self, i)
701     }
702     #[cfg(any(feature = "derive", feature = "full"))]
fold_type_ptr(&mut self, i: TypePtr) -> TypePtr703     fn fold_type_ptr(&mut self, i: TypePtr) -> TypePtr {
704         fold_type_ptr(self, i)
705     }
706     #[cfg(any(feature = "derive", feature = "full"))]
fold_type_reference(&mut self, i: TypeReference) -> TypeReference707     fn fold_type_reference(&mut self, i: TypeReference) -> TypeReference {
708         fold_type_reference(self, i)
709     }
710     #[cfg(any(feature = "derive", feature = "full"))]
fold_type_slice(&mut self, i: TypeSlice) -> TypeSlice711     fn fold_type_slice(&mut self, i: TypeSlice) -> TypeSlice {
712         fold_type_slice(self, i)
713     }
714     #[cfg(any(feature = "derive", feature = "full"))]
fold_type_trait_object(&mut self, i: TypeTraitObject) -> TypeTraitObject715     fn fold_type_trait_object(&mut self, i: TypeTraitObject) -> TypeTraitObject {
716         fold_type_trait_object(self, i)
717     }
718     #[cfg(any(feature = "derive", feature = "full"))]
fold_type_tuple(&mut self, i: TypeTuple) -> TypeTuple719     fn fold_type_tuple(&mut self, i: TypeTuple) -> TypeTuple {
720         fold_type_tuple(self, i)
721     }
722     #[cfg(any(feature = "derive", feature = "full"))]
fold_un_op(&mut self, i: UnOp) -> UnOp723     fn fold_un_op(&mut self, i: UnOp) -> UnOp {
724         fold_un_op(self, i)
725     }
726     #[cfg(feature = "full")]
fold_use_glob(&mut self, i: UseGlob) -> UseGlob727     fn fold_use_glob(&mut self, i: UseGlob) -> UseGlob {
728         fold_use_glob(self, i)
729     }
730     #[cfg(feature = "full")]
fold_use_group(&mut self, i: UseGroup) -> UseGroup731     fn fold_use_group(&mut self, i: UseGroup) -> UseGroup {
732         fold_use_group(self, i)
733     }
734     #[cfg(feature = "full")]
fold_use_name(&mut self, i: UseName) -> UseName735     fn fold_use_name(&mut self, i: UseName) -> UseName {
736         fold_use_name(self, i)
737     }
738     #[cfg(feature = "full")]
fold_use_path(&mut self, i: UsePath) -> UsePath739     fn fold_use_path(&mut self, i: UsePath) -> UsePath {
740         fold_use_path(self, i)
741     }
742     #[cfg(feature = "full")]
fold_use_rename(&mut self, i: UseRename) -> UseRename743     fn fold_use_rename(&mut self, i: UseRename) -> UseRename {
744         fold_use_rename(self, i)
745     }
746     #[cfg(feature = "full")]
fold_use_tree(&mut self, i: UseTree) -> UseTree747     fn fold_use_tree(&mut self, i: UseTree) -> UseTree {
748         fold_use_tree(self, i)
749     }
750     #[cfg(any(feature = "derive", feature = "full"))]
fold_variadic(&mut self, i: Variadic) -> Variadic751     fn fold_variadic(&mut self, i: Variadic) -> Variadic {
752         fold_variadic(self, i)
753     }
754     #[cfg(any(feature = "derive", feature = "full"))]
fold_variant(&mut self, i: Variant) -> Variant755     fn fold_variant(&mut self, i: Variant) -> Variant {
756         fold_variant(self, i)
757     }
758     #[cfg(any(feature = "derive", feature = "full"))]
fold_vis_crate(&mut self, i: VisCrate) -> VisCrate759     fn fold_vis_crate(&mut self, i: VisCrate) -> VisCrate {
760         fold_vis_crate(self, i)
761     }
762     #[cfg(any(feature = "derive", feature = "full"))]
fold_vis_public(&mut self, i: VisPublic) -> VisPublic763     fn fold_vis_public(&mut self, i: VisPublic) -> VisPublic {
764         fold_vis_public(self, i)
765     }
766     #[cfg(any(feature = "derive", feature = "full"))]
fold_vis_restricted(&mut self, i: VisRestricted) -> VisRestricted767     fn fold_vis_restricted(&mut self, i: VisRestricted) -> VisRestricted {
768         fold_vis_restricted(self, i)
769     }
770     #[cfg(any(feature = "derive", feature = "full"))]
fold_visibility(&mut self, i: Visibility) -> Visibility771     fn fold_visibility(&mut self, i: Visibility) -> Visibility {
772         fold_visibility(self, i)
773     }
774     #[cfg(any(feature = "derive", feature = "full"))]
fold_where_clause(&mut self, i: WhereClause) -> WhereClause775     fn fold_where_clause(&mut self, i: WhereClause) -> WhereClause {
776         fold_where_clause(self, i)
777     }
778     #[cfg(any(feature = "derive", feature = "full"))]
fold_where_predicate(&mut self, i: WherePredicate) -> WherePredicate779     fn fold_where_predicate(&mut self, i: WherePredicate) -> WherePredicate {
780         fold_where_predicate(self, i)
781     }
782 }
783 #[cfg(any(feature = "derive", feature = "full"))]
fold_abi<F>(f: &mut F, node: Abi) -> Abi where F: Fold + ?Sized,784 pub fn fold_abi<F>(f: &mut F, node: Abi) -> Abi
785 where
786     F: Fold + ?Sized,
787 {
788     Abi {
789         extern_token: Token![extern](tokens_helper(f, &node.extern_token.span)),
790         name: (node.name).map(|it| f.fold_lit_str(it)),
791     }
792 }
793 #[cfg(any(feature = "derive", feature = "full"))]
fold_angle_bracketed_generic_arguments<F>( f: &mut F, node: AngleBracketedGenericArguments, ) -> AngleBracketedGenericArguments where F: Fold + ?Sized,794 pub fn fold_angle_bracketed_generic_arguments<F>(
795     f: &mut F,
796     node: AngleBracketedGenericArguments,
797 ) -> AngleBracketedGenericArguments
798 where
799     F: Fold + ?Sized,
800 {
801     AngleBracketedGenericArguments {
802         colon2_token: (node.colon2_token).map(|it| Token ! [ :: ](tokens_helper(f, &it.spans))),
803         lt_token: Token ! [ < ](tokens_helper(f, &node.lt_token.spans)),
804         args: FoldHelper::lift(node.args, |it| f.fold_generic_argument(it)),
805         gt_token: Token ! [ > ](tokens_helper(f, &node.gt_token.spans)),
806     }
807 }
808 #[cfg(feature = "full")]
fold_arm<F>(f: &mut F, node: Arm) -> Arm where F: Fold + ?Sized,809 pub fn fold_arm<F>(f: &mut F, node: Arm) -> Arm
810 where
811     F: Fold + ?Sized,
812 {
813     Arm {
814         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
815         pat: f.fold_pat(node.pat),
816         guard: (node.guard).map(|it| {
817             (
818                 Token![if](tokens_helper(f, &(it).0.span)),
819                 Box::new(f.fold_expr(*(it).1)),
820             )
821         }),
822         fat_arrow_token: Token ! [ => ](tokens_helper(f, &node.fat_arrow_token.spans)),
823         body: Box::new(f.fold_expr(*node.body)),
824         comma: (node.comma).map(|it| Token ! [ , ](tokens_helper(f, &it.spans))),
825     }
826 }
827 #[cfg(any(feature = "derive", feature = "full"))]
fold_attr_style<F>(f: &mut F, node: AttrStyle) -> AttrStyle where F: Fold + ?Sized,828 pub fn fold_attr_style<F>(f: &mut F, node: AttrStyle) -> AttrStyle
829 where
830     F: Fold + ?Sized,
831 {
832     match node {
833         AttrStyle::Outer => AttrStyle::Outer,
834         AttrStyle::Inner(_binding_0) => {
835             AttrStyle::Inner(Token![!](tokens_helper(f, &_binding_0.spans)))
836         }
837     }
838 }
839 #[cfg(any(feature = "derive", feature = "full"))]
fold_attribute<F>(f: &mut F, node: Attribute) -> Attribute where F: Fold + ?Sized,840 pub fn fold_attribute<F>(f: &mut F, node: Attribute) -> Attribute
841 where
842     F: Fold + ?Sized,
843 {
844     Attribute {
845         pound_token: Token ! [ # ](tokens_helper(f, &node.pound_token.spans)),
846         style: f.fold_attr_style(node.style),
847         bracket_token: Bracket(tokens_helper(f, &node.bracket_token.span)),
848         path: f.fold_path(node.path),
849         tokens: node.tokens,
850     }
851 }
852 #[cfg(any(feature = "derive", feature = "full"))]
fold_bare_fn_arg<F>(f: &mut F, node: BareFnArg) -> BareFnArg where F: Fold + ?Sized,853 pub fn fold_bare_fn_arg<F>(f: &mut F, node: BareFnArg) -> BareFnArg
854 where
855     F: Fold + ?Sized,
856 {
857     BareFnArg {
858         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
859         name: (node.name).map(|it| {
860             (
861                 f.fold_ident((it).0),
862                 Token ! [ : ](tokens_helper(f, &(it).1.spans)),
863             )
864         }),
865         ty: f.fold_type(node.ty),
866     }
867 }
868 #[cfg(any(feature = "derive", feature = "full"))]
fold_bin_op<F>(f: &mut F, node: BinOp) -> BinOp where F: Fold + ?Sized,869 pub fn fold_bin_op<F>(f: &mut F, node: BinOp) -> BinOp
870 where
871     F: Fold + ?Sized,
872 {
873     match node {
874         BinOp::Add(_binding_0) => BinOp::Add(Token ! [ + ](tokens_helper(f, &_binding_0.spans))),
875         BinOp::Sub(_binding_0) => BinOp::Sub(Token ! [ - ](tokens_helper(f, &_binding_0.spans))),
876         BinOp::Mul(_binding_0) => BinOp::Mul(Token ! [ * ](tokens_helper(f, &_binding_0.spans))),
877         BinOp::Div(_binding_0) => BinOp::Div(Token ! [ / ](tokens_helper(f, &_binding_0.spans))),
878         BinOp::Rem(_binding_0) => BinOp::Rem(Token ! [ % ](tokens_helper(f, &_binding_0.spans))),
879         BinOp::And(_binding_0) => BinOp::And(Token ! [ && ](tokens_helper(f, &_binding_0.spans))),
880         BinOp::Or(_binding_0) => BinOp::Or(Token ! [ || ](tokens_helper(f, &_binding_0.spans))),
881         BinOp::BitXor(_binding_0) => {
882             BinOp::BitXor(Token ! [ ^ ](tokens_helper(f, &_binding_0.spans)))
883         }
884         BinOp::BitAnd(_binding_0) => {
885             BinOp::BitAnd(Token ! [ & ](tokens_helper(f, &_binding_0.spans)))
886         }
887         BinOp::BitOr(_binding_0) => {
888             BinOp::BitOr(Token ! [ | ](tokens_helper(f, &_binding_0.spans)))
889         }
890         BinOp::Shl(_binding_0) => BinOp::Shl(Token ! [ << ](tokens_helper(f, &_binding_0.spans))),
891         BinOp::Shr(_binding_0) => BinOp::Shr(Token ! [ >> ](tokens_helper(f, &_binding_0.spans))),
892         BinOp::Eq(_binding_0) => BinOp::Eq(Token ! [ == ](tokens_helper(f, &_binding_0.spans))),
893         BinOp::Lt(_binding_0) => BinOp::Lt(Token ! [ < ](tokens_helper(f, &_binding_0.spans))),
894         BinOp::Le(_binding_0) => BinOp::Le(Token ! [ <= ](tokens_helper(f, &_binding_0.spans))),
895         BinOp::Ne(_binding_0) => BinOp::Ne(Token ! [ != ](tokens_helper(f, &_binding_0.spans))),
896         BinOp::Ge(_binding_0) => BinOp::Ge(Token ! [ >= ](tokens_helper(f, &_binding_0.spans))),
897         BinOp::Gt(_binding_0) => BinOp::Gt(Token ! [ > ](tokens_helper(f, &_binding_0.spans))),
898         BinOp::AddEq(_binding_0) => {
899             BinOp::AddEq(Token ! [ += ](tokens_helper(f, &_binding_0.spans)))
900         }
901         BinOp::SubEq(_binding_0) => {
902             BinOp::SubEq(Token ! [ -= ](tokens_helper(f, &_binding_0.spans)))
903         }
904         BinOp::MulEq(_binding_0) => {
905             BinOp::MulEq(Token ! [ *= ](tokens_helper(f, &_binding_0.spans)))
906         }
907         BinOp::DivEq(_binding_0) => {
908             BinOp::DivEq(Token ! [ /= ](tokens_helper(f, &_binding_0.spans)))
909         }
910         BinOp::RemEq(_binding_0) => {
911             BinOp::RemEq(Token ! [ %= ](tokens_helper(f, &_binding_0.spans)))
912         }
913         BinOp::BitXorEq(_binding_0) => {
914             BinOp::BitXorEq(Token ! [ ^= ](tokens_helper(f, &_binding_0.spans)))
915         }
916         BinOp::BitAndEq(_binding_0) => {
917             BinOp::BitAndEq(Token ! [ &= ](tokens_helper(f, &_binding_0.spans)))
918         }
919         BinOp::BitOrEq(_binding_0) => {
920             BinOp::BitOrEq(Token ! [ |= ](tokens_helper(f, &_binding_0.spans)))
921         }
922         BinOp::ShlEq(_binding_0) => {
923             BinOp::ShlEq(Token ! [ <<= ](tokens_helper(f, &_binding_0.spans)))
924         }
925         BinOp::ShrEq(_binding_0) => {
926             BinOp::ShrEq(Token ! [ >>= ](tokens_helper(f, &_binding_0.spans)))
927         }
928     }
929 }
930 #[cfg(any(feature = "derive", feature = "full"))]
fold_binding<F>(f: &mut F, node: Binding) -> Binding where F: Fold + ?Sized,931 pub fn fold_binding<F>(f: &mut F, node: Binding) -> Binding
932 where
933     F: Fold + ?Sized,
934 {
935     Binding {
936         ident: f.fold_ident(node.ident),
937         eq_token: Token ! [ = ](tokens_helper(f, &node.eq_token.spans)),
938         ty: f.fold_type(node.ty),
939     }
940 }
941 #[cfg(feature = "full")]
fold_block<F>(f: &mut F, node: Block) -> Block where F: Fold + ?Sized,942 pub fn fold_block<F>(f: &mut F, node: Block) -> Block
943 where
944     F: Fold + ?Sized,
945 {
946     Block {
947         brace_token: Brace(tokens_helper(f, &node.brace_token.span)),
948         stmts: FoldHelper::lift(node.stmts, |it| f.fold_stmt(it)),
949     }
950 }
951 #[cfg(any(feature = "derive", feature = "full"))]
fold_bound_lifetimes<F>(f: &mut F, node: BoundLifetimes) -> BoundLifetimes where F: Fold + ?Sized,952 pub fn fold_bound_lifetimes<F>(f: &mut F, node: BoundLifetimes) -> BoundLifetimes
953 where
954     F: Fold + ?Sized,
955 {
956     BoundLifetimes {
957         for_token: Token![for](tokens_helper(f, &node.for_token.span)),
958         lt_token: Token ! [ < ](tokens_helper(f, &node.lt_token.spans)),
959         lifetimes: FoldHelper::lift(node.lifetimes, |it| f.fold_lifetime_def(it)),
960         gt_token: Token ! [ > ](tokens_helper(f, &node.gt_token.spans)),
961     }
962 }
963 #[cfg(any(feature = "derive", feature = "full"))]
fold_const_param<F>(f: &mut F, node: ConstParam) -> ConstParam where F: Fold + ?Sized,964 pub fn fold_const_param<F>(f: &mut F, node: ConstParam) -> ConstParam
965 where
966     F: Fold + ?Sized,
967 {
968     ConstParam {
969         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
970         const_token: Token![const](tokens_helper(f, &node.const_token.span)),
971         ident: f.fold_ident(node.ident),
972         colon_token: Token ! [ : ](tokens_helper(f, &node.colon_token.spans)),
973         ty: f.fold_type(node.ty),
974         eq_token: (node.eq_token).map(|it| Token ! [ = ](tokens_helper(f, &it.spans))),
975         default: (node.default).map(|it| f.fold_expr(it)),
976     }
977 }
978 #[cfg(any(feature = "derive", feature = "full"))]
fold_constraint<F>(f: &mut F, node: Constraint) -> Constraint where F: Fold + ?Sized,979 pub fn fold_constraint<F>(f: &mut F, node: Constraint) -> Constraint
980 where
981     F: Fold + ?Sized,
982 {
983     Constraint {
984         ident: f.fold_ident(node.ident),
985         colon_token: Token ! [ : ](tokens_helper(f, &node.colon_token.spans)),
986         bounds: FoldHelper::lift(node.bounds, |it| f.fold_type_param_bound(it)),
987     }
988 }
989 #[cfg(feature = "derive")]
fold_data<F>(f: &mut F, node: Data) -> Data where F: Fold + ?Sized,990 pub fn fold_data<F>(f: &mut F, node: Data) -> Data
991 where
992     F: Fold + ?Sized,
993 {
994     match node {
995         Data::Struct(_binding_0) => Data::Struct(f.fold_data_struct(_binding_0)),
996         Data::Enum(_binding_0) => Data::Enum(f.fold_data_enum(_binding_0)),
997         Data::Union(_binding_0) => Data::Union(f.fold_data_union(_binding_0)),
998     }
999 }
1000 #[cfg(feature = "derive")]
fold_data_enum<F>(f: &mut F, node: DataEnum) -> DataEnum where F: Fold + ?Sized,1001 pub fn fold_data_enum<F>(f: &mut F, node: DataEnum) -> DataEnum
1002 where
1003     F: Fold + ?Sized,
1004 {
1005     DataEnum {
1006         enum_token: Token![enum](tokens_helper(f, &node.enum_token.span)),
1007         brace_token: Brace(tokens_helper(f, &node.brace_token.span)),
1008         variants: FoldHelper::lift(node.variants, |it| f.fold_variant(it)),
1009     }
1010 }
1011 #[cfg(feature = "derive")]
fold_data_struct<F>(f: &mut F, node: DataStruct) -> DataStruct where F: Fold + ?Sized,1012 pub fn fold_data_struct<F>(f: &mut F, node: DataStruct) -> DataStruct
1013 where
1014     F: Fold + ?Sized,
1015 {
1016     DataStruct {
1017         struct_token: Token![struct](tokens_helper(f, &node.struct_token.span)),
1018         fields: f.fold_fields(node.fields),
1019         semi_token: (node.semi_token).map(|it| Token ! [ ; ](tokens_helper(f, &it.spans))),
1020     }
1021 }
1022 #[cfg(feature = "derive")]
fold_data_union<F>(f: &mut F, node: DataUnion) -> DataUnion where F: Fold + ?Sized,1023 pub fn fold_data_union<F>(f: &mut F, node: DataUnion) -> DataUnion
1024 where
1025     F: Fold + ?Sized,
1026 {
1027     DataUnion {
1028         union_token: Token![union](tokens_helper(f, &node.union_token.span)),
1029         fields: f.fold_fields_named(node.fields),
1030     }
1031 }
1032 #[cfg(feature = "derive")]
fold_derive_input<F>(f: &mut F, node: DeriveInput) -> DeriveInput where F: Fold + ?Sized,1033 pub fn fold_derive_input<F>(f: &mut F, node: DeriveInput) -> DeriveInput
1034 where
1035     F: Fold + ?Sized,
1036 {
1037     DeriveInput {
1038         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1039         vis: f.fold_visibility(node.vis),
1040         ident: f.fold_ident(node.ident),
1041         generics: f.fold_generics(node.generics),
1042         data: f.fold_data(node.data),
1043     }
1044 }
1045 #[cfg(any(feature = "derive", feature = "full"))]
fold_expr<F>(f: &mut F, node: Expr) -> Expr where F: Fold + ?Sized,1046 pub fn fold_expr<F>(f: &mut F, node: Expr) -> Expr
1047 where
1048     F: Fold + ?Sized,
1049 {
1050     match node {
1051         Expr::Array(_binding_0) => Expr::Array(full!(f.fold_expr_array(_binding_0))),
1052         Expr::Assign(_binding_0) => Expr::Assign(full!(f.fold_expr_assign(_binding_0))),
1053         Expr::AssignOp(_binding_0) => Expr::AssignOp(full!(f.fold_expr_assign_op(_binding_0))),
1054         Expr::Async(_binding_0) => Expr::Async(full!(f.fold_expr_async(_binding_0))),
1055         Expr::Await(_binding_0) => Expr::Await(full!(f.fold_expr_await(_binding_0))),
1056         Expr::Binary(_binding_0) => Expr::Binary(f.fold_expr_binary(_binding_0)),
1057         Expr::Block(_binding_0) => Expr::Block(full!(f.fold_expr_block(_binding_0))),
1058         Expr::Box(_binding_0) => Expr::Box(full!(f.fold_expr_box(_binding_0))),
1059         Expr::Break(_binding_0) => Expr::Break(full!(f.fold_expr_break(_binding_0))),
1060         Expr::Call(_binding_0) => Expr::Call(f.fold_expr_call(_binding_0)),
1061         Expr::Cast(_binding_0) => Expr::Cast(f.fold_expr_cast(_binding_0)),
1062         Expr::Closure(_binding_0) => Expr::Closure(full!(f.fold_expr_closure(_binding_0))),
1063         Expr::Continue(_binding_0) => Expr::Continue(full!(f.fold_expr_continue(_binding_0))),
1064         Expr::Field(_binding_0) => Expr::Field(f.fold_expr_field(_binding_0)),
1065         Expr::ForLoop(_binding_0) => Expr::ForLoop(full!(f.fold_expr_for_loop(_binding_0))),
1066         Expr::Group(_binding_0) => Expr::Group(full!(f.fold_expr_group(_binding_0))),
1067         Expr::If(_binding_0) => Expr::If(full!(f.fold_expr_if(_binding_0))),
1068         Expr::Index(_binding_0) => Expr::Index(f.fold_expr_index(_binding_0)),
1069         Expr::Let(_binding_0) => Expr::Let(full!(f.fold_expr_let(_binding_0))),
1070         Expr::Lit(_binding_0) => Expr::Lit(f.fold_expr_lit(_binding_0)),
1071         Expr::Loop(_binding_0) => Expr::Loop(full!(f.fold_expr_loop(_binding_0))),
1072         Expr::Macro(_binding_0) => Expr::Macro(full!(f.fold_expr_macro(_binding_0))),
1073         Expr::Match(_binding_0) => Expr::Match(full!(f.fold_expr_match(_binding_0))),
1074         Expr::MethodCall(_binding_0) => {
1075             Expr::MethodCall(full!(f.fold_expr_method_call(_binding_0)))
1076         }
1077         Expr::Paren(_binding_0) => Expr::Paren(f.fold_expr_paren(_binding_0)),
1078         Expr::Path(_binding_0) => Expr::Path(f.fold_expr_path(_binding_0)),
1079         Expr::Range(_binding_0) => Expr::Range(full!(f.fold_expr_range(_binding_0))),
1080         Expr::Reference(_binding_0) => Expr::Reference(full!(f.fold_expr_reference(_binding_0))),
1081         Expr::Repeat(_binding_0) => Expr::Repeat(full!(f.fold_expr_repeat(_binding_0))),
1082         Expr::Return(_binding_0) => Expr::Return(full!(f.fold_expr_return(_binding_0))),
1083         Expr::Struct(_binding_0) => Expr::Struct(full!(f.fold_expr_struct(_binding_0))),
1084         Expr::Try(_binding_0) => Expr::Try(full!(f.fold_expr_try(_binding_0))),
1085         Expr::TryBlock(_binding_0) => Expr::TryBlock(full!(f.fold_expr_try_block(_binding_0))),
1086         Expr::Tuple(_binding_0) => Expr::Tuple(full!(f.fold_expr_tuple(_binding_0))),
1087         Expr::Type(_binding_0) => Expr::Type(full!(f.fold_expr_type(_binding_0))),
1088         Expr::Unary(_binding_0) => Expr::Unary(f.fold_expr_unary(_binding_0)),
1089         Expr::Unsafe(_binding_0) => Expr::Unsafe(full!(f.fold_expr_unsafe(_binding_0))),
1090         Expr::Verbatim(_binding_0) => Expr::Verbatim(_binding_0),
1091         Expr::While(_binding_0) => Expr::While(full!(f.fold_expr_while(_binding_0))),
1092         Expr::Yield(_binding_0) => Expr::Yield(full!(f.fold_expr_yield(_binding_0))),
1093         _ => unreachable!(),
1094     }
1095 }
1096 #[cfg(feature = "full")]
fold_expr_array<F>(f: &mut F, node: ExprArray) -> ExprArray where F: Fold + ?Sized,1097 pub fn fold_expr_array<F>(f: &mut F, node: ExprArray) -> ExprArray
1098 where
1099     F: Fold + ?Sized,
1100 {
1101     ExprArray {
1102         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1103         bracket_token: Bracket(tokens_helper(f, &node.bracket_token.span)),
1104         elems: FoldHelper::lift(node.elems, |it| f.fold_expr(it)),
1105     }
1106 }
1107 #[cfg(feature = "full")]
fold_expr_assign<F>(f: &mut F, node: ExprAssign) -> ExprAssign where F: Fold + ?Sized,1108 pub fn fold_expr_assign<F>(f: &mut F, node: ExprAssign) -> ExprAssign
1109 where
1110     F: Fold + ?Sized,
1111 {
1112     ExprAssign {
1113         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1114         left: Box::new(f.fold_expr(*node.left)),
1115         eq_token: Token ! [ = ](tokens_helper(f, &node.eq_token.spans)),
1116         right: Box::new(f.fold_expr(*node.right)),
1117     }
1118 }
1119 #[cfg(feature = "full")]
fold_expr_assign_op<F>(f: &mut F, node: ExprAssignOp) -> ExprAssignOp where F: Fold + ?Sized,1120 pub fn fold_expr_assign_op<F>(f: &mut F, node: ExprAssignOp) -> ExprAssignOp
1121 where
1122     F: Fold + ?Sized,
1123 {
1124     ExprAssignOp {
1125         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1126         left: Box::new(f.fold_expr(*node.left)),
1127         op: f.fold_bin_op(node.op),
1128         right: Box::new(f.fold_expr(*node.right)),
1129     }
1130 }
1131 #[cfg(feature = "full")]
fold_expr_async<F>(f: &mut F, node: ExprAsync) -> ExprAsync where F: Fold + ?Sized,1132 pub fn fold_expr_async<F>(f: &mut F, node: ExprAsync) -> ExprAsync
1133 where
1134     F: Fold + ?Sized,
1135 {
1136     ExprAsync {
1137         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1138         async_token: Token![async](tokens_helper(f, &node.async_token.span)),
1139         capture: (node.capture).map(|it| Token![move](tokens_helper(f, &it.span))),
1140         block: f.fold_block(node.block),
1141     }
1142 }
1143 #[cfg(feature = "full")]
fold_expr_await<F>(f: &mut F, node: ExprAwait) -> ExprAwait where F: Fold + ?Sized,1144 pub fn fold_expr_await<F>(f: &mut F, node: ExprAwait) -> ExprAwait
1145 where
1146     F: Fold + ?Sized,
1147 {
1148     ExprAwait {
1149         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1150         base: Box::new(f.fold_expr(*node.base)),
1151         dot_token: Token ! [ . ](tokens_helper(f, &node.dot_token.spans)),
1152         await_token: crate::token::Await(tokens_helper(f, &node.await_token.span)),
1153     }
1154 }
1155 #[cfg(any(feature = "derive", feature = "full"))]
fold_expr_binary<F>(f: &mut F, node: ExprBinary) -> ExprBinary where F: Fold + ?Sized,1156 pub fn fold_expr_binary<F>(f: &mut F, node: ExprBinary) -> ExprBinary
1157 where
1158     F: Fold + ?Sized,
1159 {
1160     ExprBinary {
1161         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1162         left: Box::new(f.fold_expr(*node.left)),
1163         op: f.fold_bin_op(node.op),
1164         right: Box::new(f.fold_expr(*node.right)),
1165     }
1166 }
1167 #[cfg(feature = "full")]
fold_expr_block<F>(f: &mut F, node: ExprBlock) -> ExprBlock where F: Fold + ?Sized,1168 pub fn fold_expr_block<F>(f: &mut F, node: ExprBlock) -> ExprBlock
1169 where
1170     F: Fold + ?Sized,
1171 {
1172     ExprBlock {
1173         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1174         label: (node.label).map(|it| f.fold_label(it)),
1175         block: f.fold_block(node.block),
1176     }
1177 }
1178 #[cfg(feature = "full")]
fold_expr_box<F>(f: &mut F, node: ExprBox) -> ExprBox where F: Fold + ?Sized,1179 pub fn fold_expr_box<F>(f: &mut F, node: ExprBox) -> ExprBox
1180 where
1181     F: Fold + ?Sized,
1182 {
1183     ExprBox {
1184         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1185         box_token: Token![box](tokens_helper(f, &node.box_token.span)),
1186         expr: Box::new(f.fold_expr(*node.expr)),
1187     }
1188 }
1189 #[cfg(feature = "full")]
fold_expr_break<F>(f: &mut F, node: ExprBreak) -> ExprBreak where F: Fold + ?Sized,1190 pub fn fold_expr_break<F>(f: &mut F, node: ExprBreak) -> ExprBreak
1191 where
1192     F: Fold + ?Sized,
1193 {
1194     ExprBreak {
1195         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1196         break_token: Token![break](tokens_helper(f, &node.break_token.span)),
1197         label: (node.label).map(|it| f.fold_lifetime(it)),
1198         expr: (node.expr).map(|it| Box::new(f.fold_expr(*it))),
1199     }
1200 }
1201 #[cfg(any(feature = "derive", feature = "full"))]
fold_expr_call<F>(f: &mut F, node: ExprCall) -> ExprCall where F: Fold + ?Sized,1202 pub fn fold_expr_call<F>(f: &mut F, node: ExprCall) -> ExprCall
1203 where
1204     F: Fold + ?Sized,
1205 {
1206     ExprCall {
1207         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1208         func: Box::new(f.fold_expr(*node.func)),
1209         paren_token: Paren(tokens_helper(f, &node.paren_token.span)),
1210         args: FoldHelper::lift(node.args, |it| f.fold_expr(it)),
1211     }
1212 }
1213 #[cfg(any(feature = "derive", feature = "full"))]
fold_expr_cast<F>(f: &mut F, node: ExprCast) -> ExprCast where F: Fold + ?Sized,1214 pub fn fold_expr_cast<F>(f: &mut F, node: ExprCast) -> ExprCast
1215 where
1216     F: Fold + ?Sized,
1217 {
1218     ExprCast {
1219         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1220         expr: Box::new(f.fold_expr(*node.expr)),
1221         as_token: Token![as](tokens_helper(f, &node.as_token.span)),
1222         ty: Box::new(f.fold_type(*node.ty)),
1223     }
1224 }
1225 #[cfg(feature = "full")]
fold_expr_closure<F>(f: &mut F, node: ExprClosure) -> ExprClosure where F: Fold + ?Sized,1226 pub fn fold_expr_closure<F>(f: &mut F, node: ExprClosure) -> ExprClosure
1227 where
1228     F: Fold + ?Sized,
1229 {
1230     ExprClosure {
1231         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1232         asyncness: (node.asyncness).map(|it| Token![async](tokens_helper(f, &it.span))),
1233         movability: (node.movability).map(|it| Token![static](tokens_helper(f, &it.span))),
1234         capture: (node.capture).map(|it| Token![move](tokens_helper(f, &it.span))),
1235         or1_token: Token ! [ | ](tokens_helper(f, &node.or1_token.spans)),
1236         inputs: FoldHelper::lift(node.inputs, |it| f.fold_pat(it)),
1237         or2_token: Token ! [ | ](tokens_helper(f, &node.or2_token.spans)),
1238         output: f.fold_return_type(node.output),
1239         body: Box::new(f.fold_expr(*node.body)),
1240     }
1241 }
1242 #[cfg(feature = "full")]
fold_expr_continue<F>(f: &mut F, node: ExprContinue) -> ExprContinue where F: Fold + ?Sized,1243 pub fn fold_expr_continue<F>(f: &mut F, node: ExprContinue) -> ExprContinue
1244 where
1245     F: Fold + ?Sized,
1246 {
1247     ExprContinue {
1248         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1249         continue_token: Token![continue](tokens_helper(f, &node.continue_token.span)),
1250         label: (node.label).map(|it| f.fold_lifetime(it)),
1251     }
1252 }
1253 #[cfg(any(feature = "derive", feature = "full"))]
fold_expr_field<F>(f: &mut F, node: ExprField) -> ExprField where F: Fold + ?Sized,1254 pub fn fold_expr_field<F>(f: &mut F, node: ExprField) -> ExprField
1255 where
1256     F: Fold + ?Sized,
1257 {
1258     ExprField {
1259         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1260         base: Box::new(f.fold_expr(*node.base)),
1261         dot_token: Token ! [ . ](tokens_helper(f, &node.dot_token.spans)),
1262         member: f.fold_member(node.member),
1263     }
1264 }
1265 #[cfg(feature = "full")]
fold_expr_for_loop<F>(f: &mut F, node: ExprForLoop) -> ExprForLoop where F: Fold + ?Sized,1266 pub fn fold_expr_for_loop<F>(f: &mut F, node: ExprForLoop) -> ExprForLoop
1267 where
1268     F: Fold + ?Sized,
1269 {
1270     ExprForLoop {
1271         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1272         label: (node.label).map(|it| f.fold_label(it)),
1273         for_token: Token![for](tokens_helper(f, &node.for_token.span)),
1274         pat: f.fold_pat(node.pat),
1275         in_token: Token![in](tokens_helper(f, &node.in_token.span)),
1276         expr: Box::new(f.fold_expr(*node.expr)),
1277         body: f.fold_block(node.body),
1278     }
1279 }
1280 #[cfg(feature = "full")]
fold_expr_group<F>(f: &mut F, node: ExprGroup) -> ExprGroup where F: Fold + ?Sized,1281 pub fn fold_expr_group<F>(f: &mut F, node: ExprGroup) -> ExprGroup
1282 where
1283     F: Fold + ?Sized,
1284 {
1285     ExprGroup {
1286         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1287         group_token: Group(tokens_helper(f, &node.group_token.span)),
1288         expr: Box::new(f.fold_expr(*node.expr)),
1289     }
1290 }
1291 #[cfg(feature = "full")]
fold_expr_if<F>(f: &mut F, node: ExprIf) -> ExprIf where F: Fold + ?Sized,1292 pub fn fold_expr_if<F>(f: &mut F, node: ExprIf) -> ExprIf
1293 where
1294     F: Fold + ?Sized,
1295 {
1296     ExprIf {
1297         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1298         if_token: Token![if](tokens_helper(f, &node.if_token.span)),
1299         cond: Box::new(f.fold_expr(*node.cond)),
1300         then_branch: f.fold_block(node.then_branch),
1301         else_branch: (node.else_branch).map(|it| {
1302             (
1303                 Token![else](tokens_helper(f, &(it).0.span)),
1304                 Box::new(f.fold_expr(*(it).1)),
1305             )
1306         }),
1307     }
1308 }
1309 #[cfg(any(feature = "derive", feature = "full"))]
fold_expr_index<F>(f: &mut F, node: ExprIndex) -> ExprIndex where F: Fold + ?Sized,1310 pub fn fold_expr_index<F>(f: &mut F, node: ExprIndex) -> ExprIndex
1311 where
1312     F: Fold + ?Sized,
1313 {
1314     ExprIndex {
1315         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1316         expr: Box::new(f.fold_expr(*node.expr)),
1317         bracket_token: Bracket(tokens_helper(f, &node.bracket_token.span)),
1318         index: Box::new(f.fold_expr(*node.index)),
1319     }
1320 }
1321 #[cfg(feature = "full")]
fold_expr_let<F>(f: &mut F, node: ExprLet) -> ExprLet where F: Fold + ?Sized,1322 pub fn fold_expr_let<F>(f: &mut F, node: ExprLet) -> ExprLet
1323 where
1324     F: Fold + ?Sized,
1325 {
1326     ExprLet {
1327         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1328         let_token: Token![let](tokens_helper(f, &node.let_token.span)),
1329         pat: f.fold_pat(node.pat),
1330         eq_token: Token ! [ = ](tokens_helper(f, &node.eq_token.spans)),
1331         expr: Box::new(f.fold_expr(*node.expr)),
1332     }
1333 }
1334 #[cfg(any(feature = "derive", feature = "full"))]
fold_expr_lit<F>(f: &mut F, node: ExprLit) -> ExprLit where F: Fold + ?Sized,1335 pub fn fold_expr_lit<F>(f: &mut F, node: ExprLit) -> ExprLit
1336 where
1337     F: Fold + ?Sized,
1338 {
1339     ExprLit {
1340         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1341         lit: f.fold_lit(node.lit),
1342     }
1343 }
1344 #[cfg(feature = "full")]
fold_expr_loop<F>(f: &mut F, node: ExprLoop) -> ExprLoop where F: Fold + ?Sized,1345 pub fn fold_expr_loop<F>(f: &mut F, node: ExprLoop) -> ExprLoop
1346 where
1347     F: Fold + ?Sized,
1348 {
1349     ExprLoop {
1350         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1351         label: (node.label).map(|it| f.fold_label(it)),
1352         loop_token: Token![loop](tokens_helper(f, &node.loop_token.span)),
1353         body: f.fold_block(node.body),
1354     }
1355 }
1356 #[cfg(feature = "full")]
fold_expr_macro<F>(f: &mut F, node: ExprMacro) -> ExprMacro where F: Fold + ?Sized,1357 pub fn fold_expr_macro<F>(f: &mut F, node: ExprMacro) -> ExprMacro
1358 where
1359     F: Fold + ?Sized,
1360 {
1361     ExprMacro {
1362         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1363         mac: f.fold_macro(node.mac),
1364     }
1365 }
1366 #[cfg(feature = "full")]
fold_expr_match<F>(f: &mut F, node: ExprMatch) -> ExprMatch where F: Fold + ?Sized,1367 pub fn fold_expr_match<F>(f: &mut F, node: ExprMatch) -> ExprMatch
1368 where
1369     F: Fold + ?Sized,
1370 {
1371     ExprMatch {
1372         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1373         match_token: Token![match](tokens_helper(f, &node.match_token.span)),
1374         expr: Box::new(f.fold_expr(*node.expr)),
1375         brace_token: Brace(tokens_helper(f, &node.brace_token.span)),
1376         arms: FoldHelper::lift(node.arms, |it| f.fold_arm(it)),
1377     }
1378 }
1379 #[cfg(feature = "full")]
fold_expr_method_call<F>(f: &mut F, node: ExprMethodCall) -> ExprMethodCall where F: Fold + ?Sized,1380 pub fn fold_expr_method_call<F>(f: &mut F, node: ExprMethodCall) -> ExprMethodCall
1381 where
1382     F: Fold + ?Sized,
1383 {
1384     ExprMethodCall {
1385         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1386         receiver: Box::new(f.fold_expr(*node.receiver)),
1387         dot_token: Token ! [ . ](tokens_helper(f, &node.dot_token.spans)),
1388         method: f.fold_ident(node.method),
1389         turbofish: (node.turbofish).map(|it| f.fold_method_turbofish(it)),
1390         paren_token: Paren(tokens_helper(f, &node.paren_token.span)),
1391         args: FoldHelper::lift(node.args, |it| f.fold_expr(it)),
1392     }
1393 }
1394 #[cfg(any(feature = "derive", feature = "full"))]
fold_expr_paren<F>(f: &mut F, node: ExprParen) -> ExprParen where F: Fold + ?Sized,1395 pub fn fold_expr_paren<F>(f: &mut F, node: ExprParen) -> ExprParen
1396 where
1397     F: Fold + ?Sized,
1398 {
1399     ExprParen {
1400         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1401         paren_token: Paren(tokens_helper(f, &node.paren_token.span)),
1402         expr: Box::new(f.fold_expr(*node.expr)),
1403     }
1404 }
1405 #[cfg(any(feature = "derive", feature = "full"))]
fold_expr_path<F>(f: &mut F, node: ExprPath) -> ExprPath where F: Fold + ?Sized,1406 pub fn fold_expr_path<F>(f: &mut F, node: ExprPath) -> ExprPath
1407 where
1408     F: Fold + ?Sized,
1409 {
1410     ExprPath {
1411         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1412         qself: (node.qself).map(|it| f.fold_qself(it)),
1413         path: f.fold_path(node.path),
1414     }
1415 }
1416 #[cfg(feature = "full")]
fold_expr_range<F>(f: &mut F, node: ExprRange) -> ExprRange where F: Fold + ?Sized,1417 pub fn fold_expr_range<F>(f: &mut F, node: ExprRange) -> ExprRange
1418 where
1419     F: Fold + ?Sized,
1420 {
1421     ExprRange {
1422         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1423         from: (node.from).map(|it| Box::new(f.fold_expr(*it))),
1424         limits: f.fold_range_limits(node.limits),
1425         to: (node.to).map(|it| Box::new(f.fold_expr(*it))),
1426     }
1427 }
1428 #[cfg(feature = "full")]
fold_expr_reference<F>(f: &mut F, node: ExprReference) -> ExprReference where F: Fold + ?Sized,1429 pub fn fold_expr_reference<F>(f: &mut F, node: ExprReference) -> ExprReference
1430 where
1431     F: Fold + ?Sized,
1432 {
1433     ExprReference {
1434         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1435         and_token: Token ! [ & ](tokens_helper(f, &node.and_token.spans)),
1436         raw: node.raw,
1437         mutability: (node.mutability).map(|it| Token![mut](tokens_helper(f, &it.span))),
1438         expr: Box::new(f.fold_expr(*node.expr)),
1439     }
1440 }
1441 #[cfg(feature = "full")]
fold_expr_repeat<F>(f: &mut F, node: ExprRepeat) -> ExprRepeat where F: Fold + ?Sized,1442 pub fn fold_expr_repeat<F>(f: &mut F, node: ExprRepeat) -> ExprRepeat
1443 where
1444     F: Fold + ?Sized,
1445 {
1446     ExprRepeat {
1447         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1448         bracket_token: Bracket(tokens_helper(f, &node.bracket_token.span)),
1449         expr: Box::new(f.fold_expr(*node.expr)),
1450         semi_token: Token ! [ ; ](tokens_helper(f, &node.semi_token.spans)),
1451         len: Box::new(f.fold_expr(*node.len)),
1452     }
1453 }
1454 #[cfg(feature = "full")]
fold_expr_return<F>(f: &mut F, node: ExprReturn) -> ExprReturn where F: Fold + ?Sized,1455 pub fn fold_expr_return<F>(f: &mut F, node: ExprReturn) -> ExprReturn
1456 where
1457     F: Fold + ?Sized,
1458 {
1459     ExprReturn {
1460         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1461         return_token: Token![return](tokens_helper(f, &node.return_token.span)),
1462         expr: (node.expr).map(|it| Box::new(f.fold_expr(*it))),
1463     }
1464 }
1465 #[cfg(feature = "full")]
fold_expr_struct<F>(f: &mut F, node: ExprStruct) -> ExprStruct where F: Fold + ?Sized,1466 pub fn fold_expr_struct<F>(f: &mut F, node: ExprStruct) -> ExprStruct
1467 where
1468     F: Fold + ?Sized,
1469 {
1470     ExprStruct {
1471         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1472         path: f.fold_path(node.path),
1473         brace_token: Brace(tokens_helper(f, &node.brace_token.span)),
1474         fields: FoldHelper::lift(node.fields, |it| f.fold_field_value(it)),
1475         dot2_token: (node.dot2_token).map(|it| Token![..](tokens_helper(f, &it.spans))),
1476         rest: (node.rest).map(|it| Box::new(f.fold_expr(*it))),
1477     }
1478 }
1479 #[cfg(feature = "full")]
fold_expr_try<F>(f: &mut F, node: ExprTry) -> ExprTry where F: Fold + ?Sized,1480 pub fn fold_expr_try<F>(f: &mut F, node: ExprTry) -> ExprTry
1481 where
1482     F: Fold + ?Sized,
1483 {
1484     ExprTry {
1485         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1486         expr: Box::new(f.fold_expr(*node.expr)),
1487         question_token: Token ! [ ? ](tokens_helper(f, &node.question_token.spans)),
1488     }
1489 }
1490 #[cfg(feature = "full")]
fold_expr_try_block<F>(f: &mut F, node: ExprTryBlock) -> ExprTryBlock where F: Fold + ?Sized,1491 pub fn fold_expr_try_block<F>(f: &mut F, node: ExprTryBlock) -> ExprTryBlock
1492 where
1493     F: Fold + ?Sized,
1494 {
1495     ExprTryBlock {
1496         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1497         try_token: Token![try](tokens_helper(f, &node.try_token.span)),
1498         block: f.fold_block(node.block),
1499     }
1500 }
1501 #[cfg(feature = "full")]
fold_expr_tuple<F>(f: &mut F, node: ExprTuple) -> ExprTuple where F: Fold + ?Sized,1502 pub fn fold_expr_tuple<F>(f: &mut F, node: ExprTuple) -> ExprTuple
1503 where
1504     F: Fold + ?Sized,
1505 {
1506     ExprTuple {
1507         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1508         paren_token: Paren(tokens_helper(f, &node.paren_token.span)),
1509         elems: FoldHelper::lift(node.elems, |it| f.fold_expr(it)),
1510     }
1511 }
1512 #[cfg(feature = "full")]
fold_expr_type<F>(f: &mut F, node: ExprType) -> ExprType where F: Fold + ?Sized,1513 pub fn fold_expr_type<F>(f: &mut F, node: ExprType) -> ExprType
1514 where
1515     F: Fold + ?Sized,
1516 {
1517     ExprType {
1518         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1519         expr: Box::new(f.fold_expr(*node.expr)),
1520         colon_token: Token ! [ : ](tokens_helper(f, &node.colon_token.spans)),
1521         ty: Box::new(f.fold_type(*node.ty)),
1522     }
1523 }
1524 #[cfg(any(feature = "derive", feature = "full"))]
fold_expr_unary<F>(f: &mut F, node: ExprUnary) -> ExprUnary where F: Fold + ?Sized,1525 pub fn fold_expr_unary<F>(f: &mut F, node: ExprUnary) -> ExprUnary
1526 where
1527     F: Fold + ?Sized,
1528 {
1529     ExprUnary {
1530         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1531         op: f.fold_un_op(node.op),
1532         expr: Box::new(f.fold_expr(*node.expr)),
1533     }
1534 }
1535 #[cfg(feature = "full")]
fold_expr_unsafe<F>(f: &mut F, node: ExprUnsafe) -> ExprUnsafe where F: Fold + ?Sized,1536 pub fn fold_expr_unsafe<F>(f: &mut F, node: ExprUnsafe) -> ExprUnsafe
1537 where
1538     F: Fold + ?Sized,
1539 {
1540     ExprUnsafe {
1541         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1542         unsafe_token: Token![unsafe](tokens_helper(f, &node.unsafe_token.span)),
1543         block: f.fold_block(node.block),
1544     }
1545 }
1546 #[cfg(feature = "full")]
fold_expr_while<F>(f: &mut F, node: ExprWhile) -> ExprWhile where F: Fold + ?Sized,1547 pub fn fold_expr_while<F>(f: &mut F, node: ExprWhile) -> ExprWhile
1548 where
1549     F: Fold + ?Sized,
1550 {
1551     ExprWhile {
1552         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1553         label: (node.label).map(|it| f.fold_label(it)),
1554         while_token: Token![while](tokens_helper(f, &node.while_token.span)),
1555         cond: Box::new(f.fold_expr(*node.cond)),
1556         body: f.fold_block(node.body),
1557     }
1558 }
1559 #[cfg(feature = "full")]
fold_expr_yield<F>(f: &mut F, node: ExprYield) -> ExprYield where F: Fold + ?Sized,1560 pub fn fold_expr_yield<F>(f: &mut F, node: ExprYield) -> ExprYield
1561 where
1562     F: Fold + ?Sized,
1563 {
1564     ExprYield {
1565         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1566         yield_token: Token![yield](tokens_helper(f, &node.yield_token.span)),
1567         expr: (node.expr).map(|it| Box::new(f.fold_expr(*it))),
1568     }
1569 }
1570 #[cfg(any(feature = "derive", feature = "full"))]
fold_field<F>(f: &mut F, node: Field) -> Field where F: Fold + ?Sized,1571 pub fn fold_field<F>(f: &mut F, node: Field) -> Field
1572 where
1573     F: Fold + ?Sized,
1574 {
1575     Field {
1576         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1577         vis: f.fold_visibility(node.vis),
1578         ident: (node.ident).map(|it| f.fold_ident(it)),
1579         colon_token: (node.colon_token).map(|it| Token ! [ : ](tokens_helper(f, &it.spans))),
1580         ty: f.fold_type(node.ty),
1581     }
1582 }
1583 #[cfg(feature = "full")]
fold_field_pat<F>(f: &mut F, node: FieldPat) -> FieldPat where F: Fold + ?Sized,1584 pub fn fold_field_pat<F>(f: &mut F, node: FieldPat) -> FieldPat
1585 where
1586     F: Fold + ?Sized,
1587 {
1588     FieldPat {
1589         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1590         member: f.fold_member(node.member),
1591         colon_token: (node.colon_token).map(|it| Token ! [ : ](tokens_helper(f, &it.spans))),
1592         pat: Box::new(f.fold_pat(*node.pat)),
1593     }
1594 }
1595 #[cfg(feature = "full")]
fold_field_value<F>(f: &mut F, node: FieldValue) -> FieldValue where F: Fold + ?Sized,1596 pub fn fold_field_value<F>(f: &mut F, node: FieldValue) -> FieldValue
1597 where
1598     F: Fold + ?Sized,
1599 {
1600     FieldValue {
1601         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1602         member: f.fold_member(node.member),
1603         colon_token: (node.colon_token).map(|it| Token ! [ : ](tokens_helper(f, &it.spans))),
1604         expr: f.fold_expr(node.expr),
1605     }
1606 }
1607 #[cfg(any(feature = "derive", feature = "full"))]
fold_fields<F>(f: &mut F, node: Fields) -> Fields where F: Fold + ?Sized,1608 pub fn fold_fields<F>(f: &mut F, node: Fields) -> Fields
1609 where
1610     F: Fold + ?Sized,
1611 {
1612     match node {
1613         Fields::Named(_binding_0) => Fields::Named(f.fold_fields_named(_binding_0)),
1614         Fields::Unnamed(_binding_0) => Fields::Unnamed(f.fold_fields_unnamed(_binding_0)),
1615         Fields::Unit => Fields::Unit,
1616     }
1617 }
1618 #[cfg(any(feature = "derive", feature = "full"))]
fold_fields_named<F>(f: &mut F, node: FieldsNamed) -> FieldsNamed where F: Fold + ?Sized,1619 pub fn fold_fields_named<F>(f: &mut F, node: FieldsNamed) -> FieldsNamed
1620 where
1621     F: Fold + ?Sized,
1622 {
1623     FieldsNamed {
1624         brace_token: Brace(tokens_helper(f, &node.brace_token.span)),
1625         named: FoldHelper::lift(node.named, |it| f.fold_field(it)),
1626     }
1627 }
1628 #[cfg(any(feature = "derive", feature = "full"))]
fold_fields_unnamed<F>(f: &mut F, node: FieldsUnnamed) -> FieldsUnnamed where F: Fold + ?Sized,1629 pub fn fold_fields_unnamed<F>(f: &mut F, node: FieldsUnnamed) -> FieldsUnnamed
1630 where
1631     F: Fold + ?Sized,
1632 {
1633     FieldsUnnamed {
1634         paren_token: Paren(tokens_helper(f, &node.paren_token.span)),
1635         unnamed: FoldHelper::lift(node.unnamed, |it| f.fold_field(it)),
1636     }
1637 }
1638 #[cfg(feature = "full")]
fold_file<F>(f: &mut F, node: File) -> File where F: Fold + ?Sized,1639 pub fn fold_file<F>(f: &mut F, node: File) -> File
1640 where
1641     F: Fold + ?Sized,
1642 {
1643     File {
1644         shebang: node.shebang,
1645         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1646         items: FoldHelper::lift(node.items, |it| f.fold_item(it)),
1647     }
1648 }
1649 #[cfg(feature = "full")]
fold_fn_arg<F>(f: &mut F, node: FnArg) -> FnArg where F: Fold + ?Sized,1650 pub fn fold_fn_arg<F>(f: &mut F, node: FnArg) -> FnArg
1651 where
1652     F: Fold + ?Sized,
1653 {
1654     match node {
1655         FnArg::Receiver(_binding_0) => FnArg::Receiver(f.fold_receiver(_binding_0)),
1656         FnArg::Typed(_binding_0) => FnArg::Typed(f.fold_pat_type(_binding_0)),
1657     }
1658 }
1659 #[cfg(feature = "full")]
fold_foreign_item<F>(f: &mut F, node: ForeignItem) -> ForeignItem where F: Fold + ?Sized,1660 pub fn fold_foreign_item<F>(f: &mut F, node: ForeignItem) -> ForeignItem
1661 where
1662     F: Fold + ?Sized,
1663 {
1664     match node {
1665         ForeignItem::Fn(_binding_0) => ForeignItem::Fn(f.fold_foreign_item_fn(_binding_0)),
1666         ForeignItem::Static(_binding_0) => {
1667             ForeignItem::Static(f.fold_foreign_item_static(_binding_0))
1668         }
1669         ForeignItem::Type(_binding_0) => ForeignItem::Type(f.fold_foreign_item_type(_binding_0)),
1670         ForeignItem::Macro(_binding_0) => ForeignItem::Macro(f.fold_foreign_item_macro(_binding_0)),
1671         ForeignItem::Verbatim(_binding_0) => ForeignItem::Verbatim(_binding_0),
1672         _ => unreachable!(),
1673     }
1674 }
1675 #[cfg(feature = "full")]
fold_foreign_item_fn<F>(f: &mut F, node: ForeignItemFn) -> ForeignItemFn where F: Fold + ?Sized,1676 pub fn fold_foreign_item_fn<F>(f: &mut F, node: ForeignItemFn) -> ForeignItemFn
1677 where
1678     F: Fold + ?Sized,
1679 {
1680     ForeignItemFn {
1681         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1682         vis: f.fold_visibility(node.vis),
1683         sig: f.fold_signature(node.sig),
1684         semi_token: Token ! [ ; ](tokens_helper(f, &node.semi_token.spans)),
1685     }
1686 }
1687 #[cfg(feature = "full")]
fold_foreign_item_macro<F>(f: &mut F, node: ForeignItemMacro) -> ForeignItemMacro where F: Fold + ?Sized,1688 pub fn fold_foreign_item_macro<F>(f: &mut F, node: ForeignItemMacro) -> ForeignItemMacro
1689 where
1690     F: Fold + ?Sized,
1691 {
1692     ForeignItemMacro {
1693         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1694         mac: f.fold_macro(node.mac),
1695         semi_token: (node.semi_token).map(|it| Token ! [ ; ](tokens_helper(f, &it.spans))),
1696     }
1697 }
1698 #[cfg(feature = "full")]
fold_foreign_item_static<F>(f: &mut F, node: ForeignItemStatic) -> ForeignItemStatic where F: Fold + ?Sized,1699 pub fn fold_foreign_item_static<F>(f: &mut F, node: ForeignItemStatic) -> ForeignItemStatic
1700 where
1701     F: Fold + ?Sized,
1702 {
1703     ForeignItemStatic {
1704         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1705         vis: f.fold_visibility(node.vis),
1706         static_token: Token![static](tokens_helper(f, &node.static_token.span)),
1707         mutability: (node.mutability).map(|it| Token![mut](tokens_helper(f, &it.span))),
1708         ident: f.fold_ident(node.ident),
1709         colon_token: Token ! [ : ](tokens_helper(f, &node.colon_token.spans)),
1710         ty: Box::new(f.fold_type(*node.ty)),
1711         semi_token: Token ! [ ; ](tokens_helper(f, &node.semi_token.spans)),
1712     }
1713 }
1714 #[cfg(feature = "full")]
fold_foreign_item_type<F>(f: &mut F, node: ForeignItemType) -> ForeignItemType where F: Fold + ?Sized,1715 pub fn fold_foreign_item_type<F>(f: &mut F, node: ForeignItemType) -> ForeignItemType
1716 where
1717     F: Fold + ?Sized,
1718 {
1719     ForeignItemType {
1720         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1721         vis: f.fold_visibility(node.vis),
1722         type_token: Token![type](tokens_helper(f, &node.type_token.span)),
1723         ident: f.fold_ident(node.ident),
1724         semi_token: Token ! [ ; ](tokens_helper(f, &node.semi_token.spans)),
1725     }
1726 }
1727 #[cfg(any(feature = "derive", feature = "full"))]
fold_generic_argument<F>(f: &mut F, node: GenericArgument) -> GenericArgument where F: Fold + ?Sized,1728 pub fn fold_generic_argument<F>(f: &mut F, node: GenericArgument) -> GenericArgument
1729 where
1730     F: Fold + ?Sized,
1731 {
1732     match node {
1733         GenericArgument::Lifetime(_binding_0) => {
1734             GenericArgument::Lifetime(f.fold_lifetime(_binding_0))
1735         }
1736         GenericArgument::Type(_binding_0) => GenericArgument::Type(f.fold_type(_binding_0)),
1737         GenericArgument::Binding(_binding_0) => {
1738             GenericArgument::Binding(f.fold_binding(_binding_0))
1739         }
1740         GenericArgument::Constraint(_binding_0) => {
1741             GenericArgument::Constraint(f.fold_constraint(_binding_0))
1742         }
1743         GenericArgument::Const(_binding_0) => GenericArgument::Const(f.fold_expr(_binding_0)),
1744     }
1745 }
1746 #[cfg(feature = "full")]
fold_generic_method_argument<F>( f: &mut F, node: GenericMethodArgument, ) -> GenericMethodArgument where F: Fold + ?Sized,1747 pub fn fold_generic_method_argument<F>(
1748     f: &mut F,
1749     node: GenericMethodArgument,
1750 ) -> GenericMethodArgument
1751 where
1752     F: Fold + ?Sized,
1753 {
1754     match node {
1755         GenericMethodArgument::Type(_binding_0) => {
1756             GenericMethodArgument::Type(f.fold_type(_binding_0))
1757         }
1758         GenericMethodArgument::Const(_binding_0) => {
1759             GenericMethodArgument::Const(f.fold_expr(_binding_0))
1760         }
1761     }
1762 }
1763 #[cfg(any(feature = "derive", feature = "full"))]
fold_generic_param<F>(f: &mut F, node: GenericParam) -> GenericParam where F: Fold + ?Sized,1764 pub fn fold_generic_param<F>(f: &mut F, node: GenericParam) -> GenericParam
1765 where
1766     F: Fold + ?Sized,
1767 {
1768     match node {
1769         GenericParam::Type(_binding_0) => GenericParam::Type(f.fold_type_param(_binding_0)),
1770         GenericParam::Lifetime(_binding_0) => {
1771             GenericParam::Lifetime(f.fold_lifetime_def(_binding_0))
1772         }
1773         GenericParam::Const(_binding_0) => GenericParam::Const(f.fold_const_param(_binding_0)),
1774     }
1775 }
1776 #[cfg(any(feature = "derive", feature = "full"))]
fold_generics<F>(f: &mut F, node: Generics) -> Generics where F: Fold + ?Sized,1777 pub fn fold_generics<F>(f: &mut F, node: Generics) -> Generics
1778 where
1779     F: Fold + ?Sized,
1780 {
1781     Generics {
1782         lt_token: (node.lt_token).map(|it| Token ! [ < ](tokens_helper(f, &it.spans))),
1783         params: FoldHelper::lift(node.params, |it| f.fold_generic_param(it)),
1784         gt_token: (node.gt_token).map(|it| Token ! [ > ](tokens_helper(f, &it.spans))),
1785         where_clause: (node.where_clause).map(|it| f.fold_where_clause(it)),
1786     }
1787 }
fold_ident<F>(f: &mut F, node: Ident) -> Ident where F: Fold + ?Sized,1788 pub fn fold_ident<F>(f: &mut F, node: Ident) -> Ident
1789 where
1790     F: Fold + ?Sized,
1791 {
1792     let mut node = node;
1793     let span = f.fold_span(node.span());
1794     node.set_span(span);
1795     node
1796 }
1797 #[cfg(feature = "full")]
fold_impl_item<F>(f: &mut F, node: ImplItem) -> ImplItem where F: Fold + ?Sized,1798 pub fn fold_impl_item<F>(f: &mut F, node: ImplItem) -> ImplItem
1799 where
1800     F: Fold + ?Sized,
1801 {
1802     match node {
1803         ImplItem::Const(_binding_0) => ImplItem::Const(f.fold_impl_item_const(_binding_0)),
1804         ImplItem::Method(_binding_0) => ImplItem::Method(f.fold_impl_item_method(_binding_0)),
1805         ImplItem::Type(_binding_0) => ImplItem::Type(f.fold_impl_item_type(_binding_0)),
1806         ImplItem::Macro(_binding_0) => ImplItem::Macro(f.fold_impl_item_macro(_binding_0)),
1807         ImplItem::Verbatim(_binding_0) => ImplItem::Verbatim(_binding_0),
1808         _ => unreachable!(),
1809     }
1810 }
1811 #[cfg(feature = "full")]
fold_impl_item_const<F>(f: &mut F, node: ImplItemConst) -> ImplItemConst where F: Fold + ?Sized,1812 pub fn fold_impl_item_const<F>(f: &mut F, node: ImplItemConst) -> ImplItemConst
1813 where
1814     F: Fold + ?Sized,
1815 {
1816     ImplItemConst {
1817         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1818         vis: f.fold_visibility(node.vis),
1819         defaultness: (node.defaultness).map(|it| Token![default](tokens_helper(f, &it.span))),
1820         const_token: Token![const](tokens_helper(f, &node.const_token.span)),
1821         ident: f.fold_ident(node.ident),
1822         colon_token: Token ! [ : ](tokens_helper(f, &node.colon_token.spans)),
1823         ty: f.fold_type(node.ty),
1824         eq_token: Token ! [ = ](tokens_helper(f, &node.eq_token.spans)),
1825         expr: f.fold_expr(node.expr),
1826         semi_token: Token ! [ ; ](tokens_helper(f, &node.semi_token.spans)),
1827     }
1828 }
1829 #[cfg(feature = "full")]
fold_impl_item_macro<F>(f: &mut F, node: ImplItemMacro) -> ImplItemMacro where F: Fold + ?Sized,1830 pub fn fold_impl_item_macro<F>(f: &mut F, node: ImplItemMacro) -> ImplItemMacro
1831 where
1832     F: Fold + ?Sized,
1833 {
1834     ImplItemMacro {
1835         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1836         mac: f.fold_macro(node.mac),
1837         semi_token: (node.semi_token).map(|it| Token ! [ ; ](tokens_helper(f, &it.spans))),
1838     }
1839 }
1840 #[cfg(feature = "full")]
fold_impl_item_method<F>(f: &mut F, node: ImplItemMethod) -> ImplItemMethod where F: Fold + ?Sized,1841 pub fn fold_impl_item_method<F>(f: &mut F, node: ImplItemMethod) -> ImplItemMethod
1842 where
1843     F: Fold + ?Sized,
1844 {
1845     ImplItemMethod {
1846         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1847         vis: f.fold_visibility(node.vis),
1848         defaultness: (node.defaultness).map(|it| Token![default](tokens_helper(f, &it.span))),
1849         sig: f.fold_signature(node.sig),
1850         block: f.fold_block(node.block),
1851     }
1852 }
1853 #[cfg(feature = "full")]
fold_impl_item_type<F>(f: &mut F, node: ImplItemType) -> ImplItemType where F: Fold + ?Sized,1854 pub fn fold_impl_item_type<F>(f: &mut F, node: ImplItemType) -> ImplItemType
1855 where
1856     F: Fold + ?Sized,
1857 {
1858     ImplItemType {
1859         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1860         vis: f.fold_visibility(node.vis),
1861         defaultness: (node.defaultness).map(|it| Token![default](tokens_helper(f, &it.span))),
1862         type_token: Token![type](tokens_helper(f, &node.type_token.span)),
1863         ident: f.fold_ident(node.ident),
1864         generics: f.fold_generics(node.generics),
1865         eq_token: Token ! [ = ](tokens_helper(f, &node.eq_token.spans)),
1866         ty: f.fold_type(node.ty),
1867         semi_token: Token ! [ ; ](tokens_helper(f, &node.semi_token.spans)),
1868     }
1869 }
1870 #[cfg(any(feature = "derive", feature = "full"))]
fold_index<F>(f: &mut F, node: Index) -> Index where F: Fold + ?Sized,1871 pub fn fold_index<F>(f: &mut F, node: Index) -> Index
1872 where
1873     F: Fold + ?Sized,
1874 {
1875     Index {
1876         index: node.index,
1877         span: f.fold_span(node.span),
1878     }
1879 }
1880 #[cfg(feature = "full")]
fold_item<F>(f: &mut F, node: Item) -> Item where F: Fold + ?Sized,1881 pub fn fold_item<F>(f: &mut F, node: Item) -> Item
1882 where
1883     F: Fold + ?Sized,
1884 {
1885     match node {
1886         Item::Const(_binding_0) => Item::Const(f.fold_item_const(_binding_0)),
1887         Item::Enum(_binding_0) => Item::Enum(f.fold_item_enum(_binding_0)),
1888         Item::ExternCrate(_binding_0) => Item::ExternCrate(f.fold_item_extern_crate(_binding_0)),
1889         Item::Fn(_binding_0) => Item::Fn(f.fold_item_fn(_binding_0)),
1890         Item::ForeignMod(_binding_0) => Item::ForeignMod(f.fold_item_foreign_mod(_binding_0)),
1891         Item::Impl(_binding_0) => Item::Impl(f.fold_item_impl(_binding_0)),
1892         Item::Macro(_binding_0) => Item::Macro(f.fold_item_macro(_binding_0)),
1893         Item::Macro2(_binding_0) => Item::Macro2(f.fold_item_macro2(_binding_0)),
1894         Item::Mod(_binding_0) => Item::Mod(f.fold_item_mod(_binding_0)),
1895         Item::Static(_binding_0) => Item::Static(f.fold_item_static(_binding_0)),
1896         Item::Struct(_binding_0) => Item::Struct(f.fold_item_struct(_binding_0)),
1897         Item::Trait(_binding_0) => Item::Trait(f.fold_item_trait(_binding_0)),
1898         Item::TraitAlias(_binding_0) => Item::TraitAlias(f.fold_item_trait_alias(_binding_0)),
1899         Item::Type(_binding_0) => Item::Type(f.fold_item_type(_binding_0)),
1900         Item::Union(_binding_0) => Item::Union(f.fold_item_union(_binding_0)),
1901         Item::Use(_binding_0) => Item::Use(f.fold_item_use(_binding_0)),
1902         Item::Verbatim(_binding_0) => Item::Verbatim(_binding_0),
1903         _ => unreachable!(),
1904     }
1905 }
1906 #[cfg(feature = "full")]
fold_item_const<F>(f: &mut F, node: ItemConst) -> ItemConst where F: Fold + ?Sized,1907 pub fn fold_item_const<F>(f: &mut F, node: ItemConst) -> ItemConst
1908 where
1909     F: Fold + ?Sized,
1910 {
1911     ItemConst {
1912         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1913         vis: f.fold_visibility(node.vis),
1914         const_token: Token![const](tokens_helper(f, &node.const_token.span)),
1915         ident: f.fold_ident(node.ident),
1916         colon_token: Token ! [ : ](tokens_helper(f, &node.colon_token.spans)),
1917         ty: Box::new(f.fold_type(*node.ty)),
1918         eq_token: Token ! [ = ](tokens_helper(f, &node.eq_token.spans)),
1919         expr: Box::new(f.fold_expr(*node.expr)),
1920         semi_token: Token ! [ ; ](tokens_helper(f, &node.semi_token.spans)),
1921     }
1922 }
1923 #[cfg(feature = "full")]
fold_item_enum<F>(f: &mut F, node: ItemEnum) -> ItemEnum where F: Fold + ?Sized,1924 pub fn fold_item_enum<F>(f: &mut F, node: ItemEnum) -> ItemEnum
1925 where
1926     F: Fold + ?Sized,
1927 {
1928     ItemEnum {
1929         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1930         vis: f.fold_visibility(node.vis),
1931         enum_token: Token![enum](tokens_helper(f, &node.enum_token.span)),
1932         ident: f.fold_ident(node.ident),
1933         generics: f.fold_generics(node.generics),
1934         brace_token: Brace(tokens_helper(f, &node.brace_token.span)),
1935         variants: FoldHelper::lift(node.variants, |it| f.fold_variant(it)),
1936     }
1937 }
1938 #[cfg(feature = "full")]
fold_item_extern_crate<F>(f: &mut F, node: ItemExternCrate) -> ItemExternCrate where F: Fold + ?Sized,1939 pub fn fold_item_extern_crate<F>(f: &mut F, node: ItemExternCrate) -> ItemExternCrate
1940 where
1941     F: Fold + ?Sized,
1942 {
1943     ItemExternCrate {
1944         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1945         vis: f.fold_visibility(node.vis),
1946         extern_token: Token![extern](tokens_helper(f, &node.extern_token.span)),
1947         crate_token: Token![crate](tokens_helper(f, &node.crate_token.span)),
1948         ident: f.fold_ident(node.ident),
1949         rename: (node.rename).map(|it| {
1950             (
1951                 Token![as](tokens_helper(f, &(it).0.span)),
1952                 f.fold_ident((it).1),
1953             )
1954         }),
1955         semi_token: Token ! [ ; ](tokens_helper(f, &node.semi_token.spans)),
1956     }
1957 }
1958 #[cfg(feature = "full")]
fold_item_fn<F>(f: &mut F, node: ItemFn) -> ItemFn where F: Fold + ?Sized,1959 pub fn fold_item_fn<F>(f: &mut F, node: ItemFn) -> ItemFn
1960 where
1961     F: Fold + ?Sized,
1962 {
1963     ItemFn {
1964         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1965         vis: f.fold_visibility(node.vis),
1966         sig: f.fold_signature(node.sig),
1967         block: Box::new(f.fold_block(*node.block)),
1968     }
1969 }
1970 #[cfg(feature = "full")]
fold_item_foreign_mod<F>(f: &mut F, node: ItemForeignMod) -> ItemForeignMod where F: Fold + ?Sized,1971 pub fn fold_item_foreign_mod<F>(f: &mut F, node: ItemForeignMod) -> ItemForeignMod
1972 where
1973     F: Fold + ?Sized,
1974 {
1975     ItemForeignMod {
1976         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1977         abi: f.fold_abi(node.abi),
1978         brace_token: Brace(tokens_helper(f, &node.brace_token.span)),
1979         items: FoldHelper::lift(node.items, |it| f.fold_foreign_item(it)),
1980     }
1981 }
1982 #[cfg(feature = "full")]
fold_item_impl<F>(f: &mut F, node: ItemImpl) -> ItemImpl where F: Fold + ?Sized,1983 pub fn fold_item_impl<F>(f: &mut F, node: ItemImpl) -> ItemImpl
1984 where
1985     F: Fold + ?Sized,
1986 {
1987     ItemImpl {
1988         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
1989         defaultness: (node.defaultness).map(|it| Token![default](tokens_helper(f, &it.span))),
1990         unsafety: (node.unsafety).map(|it| Token![unsafe](tokens_helper(f, &it.span))),
1991         impl_token: Token![impl](tokens_helper(f, &node.impl_token.span)),
1992         generics: f.fold_generics(node.generics),
1993         trait_: (node.trait_).map(|it| {
1994             (
1995                 ((it).0).map(|it| Token![!](tokens_helper(f, &it.spans))),
1996                 f.fold_path((it).1),
1997                 Token![for](tokens_helper(f, &(it).2.span)),
1998             )
1999         }),
2000         self_ty: Box::new(f.fold_type(*node.self_ty)),
2001         brace_token: Brace(tokens_helper(f, &node.brace_token.span)),
2002         items: FoldHelper::lift(node.items, |it| f.fold_impl_item(it)),
2003     }
2004 }
2005 #[cfg(feature = "full")]
fold_item_macro<F>(f: &mut F, node: ItemMacro) -> ItemMacro where F: Fold + ?Sized,2006 pub fn fold_item_macro<F>(f: &mut F, node: ItemMacro) -> ItemMacro
2007 where
2008     F: Fold + ?Sized,
2009 {
2010     ItemMacro {
2011         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
2012         ident: (node.ident).map(|it| f.fold_ident(it)),
2013         mac: f.fold_macro(node.mac),
2014         semi_token: (node.semi_token).map(|it| Token ! [ ; ](tokens_helper(f, &it.spans))),
2015     }
2016 }
2017 #[cfg(feature = "full")]
fold_item_macro2<F>(f: &mut F, node: ItemMacro2) -> ItemMacro2 where F: Fold + ?Sized,2018 pub fn fold_item_macro2<F>(f: &mut F, node: ItemMacro2) -> ItemMacro2
2019 where
2020     F: Fold + ?Sized,
2021 {
2022     ItemMacro2 {
2023         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
2024         vis: f.fold_visibility(node.vis),
2025         macro_token: Token![macro](tokens_helper(f, &node.macro_token.span)),
2026         ident: f.fold_ident(node.ident),
2027         rules: node.rules,
2028     }
2029 }
2030 #[cfg(feature = "full")]
fold_item_mod<F>(f: &mut F, node: ItemMod) -> ItemMod where F: Fold + ?Sized,2031 pub fn fold_item_mod<F>(f: &mut F, node: ItemMod) -> ItemMod
2032 where
2033     F: Fold + ?Sized,
2034 {
2035     ItemMod {
2036         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
2037         vis: f.fold_visibility(node.vis),
2038         mod_token: Token![mod](tokens_helper(f, &node.mod_token.span)),
2039         ident: f.fold_ident(node.ident),
2040         content: (node.content).map(|it| {
2041             (
2042                 Brace(tokens_helper(f, &(it).0.span)),
2043                 FoldHelper::lift((it).1, |it| f.fold_item(it)),
2044             )
2045         }),
2046         semi: (node.semi).map(|it| Token ! [ ; ](tokens_helper(f, &it.spans))),
2047     }
2048 }
2049 #[cfg(feature = "full")]
fold_item_static<F>(f: &mut F, node: ItemStatic) -> ItemStatic where F: Fold + ?Sized,2050 pub fn fold_item_static<F>(f: &mut F, node: ItemStatic) -> ItemStatic
2051 where
2052     F: Fold + ?Sized,
2053 {
2054     ItemStatic {
2055         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
2056         vis: f.fold_visibility(node.vis),
2057         static_token: Token![static](tokens_helper(f, &node.static_token.span)),
2058         mutability: (node.mutability).map(|it| Token![mut](tokens_helper(f, &it.span))),
2059         ident: f.fold_ident(node.ident),
2060         colon_token: Token ! [ : ](tokens_helper(f, &node.colon_token.spans)),
2061         ty: Box::new(f.fold_type(*node.ty)),
2062         eq_token: Token ! [ = ](tokens_helper(f, &node.eq_token.spans)),
2063         expr: Box::new(f.fold_expr(*node.expr)),
2064         semi_token: Token ! [ ; ](tokens_helper(f, &node.semi_token.spans)),
2065     }
2066 }
2067 #[cfg(feature = "full")]
fold_item_struct<F>(f: &mut F, node: ItemStruct) -> ItemStruct where F: Fold + ?Sized,2068 pub fn fold_item_struct<F>(f: &mut F, node: ItemStruct) -> ItemStruct
2069 where
2070     F: Fold + ?Sized,
2071 {
2072     ItemStruct {
2073         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
2074         vis: f.fold_visibility(node.vis),
2075         struct_token: Token![struct](tokens_helper(f, &node.struct_token.span)),
2076         ident: f.fold_ident(node.ident),
2077         generics: f.fold_generics(node.generics),
2078         fields: f.fold_fields(node.fields),
2079         semi_token: (node.semi_token).map(|it| Token ! [ ; ](tokens_helper(f, &it.spans))),
2080     }
2081 }
2082 #[cfg(feature = "full")]
fold_item_trait<F>(f: &mut F, node: ItemTrait) -> ItemTrait where F: Fold + ?Sized,2083 pub fn fold_item_trait<F>(f: &mut F, node: ItemTrait) -> ItemTrait
2084 where
2085     F: Fold + ?Sized,
2086 {
2087     ItemTrait {
2088         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
2089         vis: f.fold_visibility(node.vis),
2090         unsafety: (node.unsafety).map(|it| Token![unsafe](tokens_helper(f, &it.span))),
2091         auto_token: (node.auto_token).map(|it| Token![auto](tokens_helper(f, &it.span))),
2092         trait_token: Token![trait](tokens_helper(f, &node.trait_token.span)),
2093         ident: f.fold_ident(node.ident),
2094         generics: f.fold_generics(node.generics),
2095         colon_token: (node.colon_token).map(|it| Token ! [ : ](tokens_helper(f, &it.spans))),
2096         supertraits: FoldHelper::lift(node.supertraits, |it| f.fold_type_param_bound(it)),
2097         brace_token: Brace(tokens_helper(f, &node.brace_token.span)),
2098         items: FoldHelper::lift(node.items, |it| f.fold_trait_item(it)),
2099     }
2100 }
2101 #[cfg(feature = "full")]
fold_item_trait_alias<F>(f: &mut F, node: ItemTraitAlias) -> ItemTraitAlias where F: Fold + ?Sized,2102 pub fn fold_item_trait_alias<F>(f: &mut F, node: ItemTraitAlias) -> ItemTraitAlias
2103 where
2104     F: Fold + ?Sized,
2105 {
2106     ItemTraitAlias {
2107         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
2108         vis: f.fold_visibility(node.vis),
2109         trait_token: Token![trait](tokens_helper(f, &node.trait_token.span)),
2110         ident: f.fold_ident(node.ident),
2111         generics: f.fold_generics(node.generics),
2112         eq_token: Token ! [ = ](tokens_helper(f, &node.eq_token.spans)),
2113         bounds: FoldHelper::lift(node.bounds, |it| f.fold_type_param_bound(it)),
2114         semi_token: Token ! [ ; ](tokens_helper(f, &node.semi_token.spans)),
2115     }
2116 }
2117 #[cfg(feature = "full")]
fold_item_type<F>(f: &mut F, node: ItemType) -> ItemType where F: Fold + ?Sized,2118 pub fn fold_item_type<F>(f: &mut F, node: ItemType) -> ItemType
2119 where
2120     F: Fold + ?Sized,
2121 {
2122     ItemType {
2123         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
2124         vis: f.fold_visibility(node.vis),
2125         type_token: Token![type](tokens_helper(f, &node.type_token.span)),
2126         ident: f.fold_ident(node.ident),
2127         generics: f.fold_generics(node.generics),
2128         eq_token: Token ! [ = ](tokens_helper(f, &node.eq_token.spans)),
2129         ty: Box::new(f.fold_type(*node.ty)),
2130         semi_token: Token ! [ ; ](tokens_helper(f, &node.semi_token.spans)),
2131     }
2132 }
2133 #[cfg(feature = "full")]
fold_item_union<F>(f: &mut F, node: ItemUnion) -> ItemUnion where F: Fold + ?Sized,2134 pub fn fold_item_union<F>(f: &mut F, node: ItemUnion) -> ItemUnion
2135 where
2136     F: Fold + ?Sized,
2137 {
2138     ItemUnion {
2139         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
2140         vis: f.fold_visibility(node.vis),
2141         union_token: Token![union](tokens_helper(f, &node.union_token.span)),
2142         ident: f.fold_ident(node.ident),
2143         generics: f.fold_generics(node.generics),
2144         fields: f.fold_fields_named(node.fields),
2145     }
2146 }
2147 #[cfg(feature = "full")]
fold_item_use<F>(f: &mut F, node: ItemUse) -> ItemUse where F: Fold + ?Sized,2148 pub fn fold_item_use<F>(f: &mut F, node: ItemUse) -> ItemUse
2149 where
2150     F: Fold + ?Sized,
2151 {
2152     ItemUse {
2153         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
2154         vis: f.fold_visibility(node.vis),
2155         use_token: Token![use](tokens_helper(f, &node.use_token.span)),
2156         leading_colon: (node.leading_colon).map(|it| Token ! [ :: ](tokens_helper(f, &it.spans))),
2157         tree: f.fold_use_tree(node.tree),
2158         semi_token: Token ! [ ; ](tokens_helper(f, &node.semi_token.spans)),
2159     }
2160 }
2161 #[cfg(feature = "full")]
fold_label<F>(f: &mut F, node: Label) -> Label where F: Fold + ?Sized,2162 pub fn fold_label<F>(f: &mut F, node: Label) -> Label
2163 where
2164     F: Fold + ?Sized,
2165 {
2166     Label {
2167         name: f.fold_lifetime(node.name),
2168         colon_token: Token ! [ : ](tokens_helper(f, &node.colon_token.spans)),
2169     }
2170 }
fold_lifetime<F>(f: &mut F, node: Lifetime) -> Lifetime where F: Fold + ?Sized,2171 pub fn fold_lifetime<F>(f: &mut F, node: Lifetime) -> Lifetime
2172 where
2173     F: Fold + ?Sized,
2174 {
2175     Lifetime {
2176         apostrophe: f.fold_span(node.apostrophe),
2177         ident: f.fold_ident(node.ident),
2178     }
2179 }
2180 #[cfg(any(feature = "derive", feature = "full"))]
fold_lifetime_def<F>(f: &mut F, node: LifetimeDef) -> LifetimeDef where F: Fold + ?Sized,2181 pub fn fold_lifetime_def<F>(f: &mut F, node: LifetimeDef) -> LifetimeDef
2182 where
2183     F: Fold + ?Sized,
2184 {
2185     LifetimeDef {
2186         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
2187         lifetime: f.fold_lifetime(node.lifetime),
2188         colon_token: (node.colon_token).map(|it| Token ! [ : ](tokens_helper(f, &it.spans))),
2189         bounds: FoldHelper::lift(node.bounds, |it| f.fold_lifetime(it)),
2190     }
2191 }
2192 #[cfg(any(feature = "derive", feature = "full"))]
fold_lit<F>(f: &mut F, node: Lit) -> Lit where F: Fold + ?Sized,2193 pub fn fold_lit<F>(f: &mut F, node: Lit) -> Lit
2194 where
2195     F: Fold + ?Sized,
2196 {
2197     match node {
2198         Lit::Str(_binding_0) => Lit::Str(f.fold_lit_str(_binding_0)),
2199         Lit::ByteStr(_binding_0) => Lit::ByteStr(f.fold_lit_byte_str(_binding_0)),
2200         Lit::Byte(_binding_0) => Lit::Byte(f.fold_lit_byte(_binding_0)),
2201         Lit::Char(_binding_0) => Lit::Char(f.fold_lit_char(_binding_0)),
2202         Lit::Int(_binding_0) => Lit::Int(f.fold_lit_int(_binding_0)),
2203         Lit::Float(_binding_0) => Lit::Float(f.fold_lit_float(_binding_0)),
2204         Lit::Bool(_binding_0) => Lit::Bool(f.fold_lit_bool(_binding_0)),
2205         Lit::Verbatim(_binding_0) => Lit::Verbatim(_binding_0),
2206     }
2207 }
2208 #[cfg(any(feature = "derive", feature = "full"))]
fold_lit_bool<F>(f: &mut F, node: LitBool) -> LitBool where F: Fold + ?Sized,2209 pub fn fold_lit_bool<F>(f: &mut F, node: LitBool) -> LitBool
2210 where
2211     F: Fold + ?Sized,
2212 {
2213     LitBool {
2214         value: node.value,
2215         span: f.fold_span(node.span),
2216     }
2217 }
2218 #[cfg(any(feature = "derive", feature = "full"))]
fold_lit_byte<F>(f: &mut F, node: LitByte) -> LitByte where F: Fold + ?Sized,2219 pub fn fold_lit_byte<F>(f: &mut F, node: LitByte) -> LitByte
2220 where
2221     F: Fold + ?Sized,
2222 {
2223     let span = f.fold_span(node.span());
2224     let mut node = node;
2225     node.set_span(span);
2226     node
2227 }
2228 #[cfg(any(feature = "derive", feature = "full"))]
fold_lit_byte_str<F>(f: &mut F, node: LitByteStr) -> LitByteStr where F: Fold + ?Sized,2229 pub fn fold_lit_byte_str<F>(f: &mut F, node: LitByteStr) -> LitByteStr
2230 where
2231     F: Fold + ?Sized,
2232 {
2233     let span = f.fold_span(node.span());
2234     let mut node = node;
2235     node.set_span(span);
2236     node
2237 }
2238 #[cfg(any(feature = "derive", feature = "full"))]
fold_lit_char<F>(f: &mut F, node: LitChar) -> LitChar where F: Fold + ?Sized,2239 pub fn fold_lit_char<F>(f: &mut F, node: LitChar) -> LitChar
2240 where
2241     F: Fold + ?Sized,
2242 {
2243     let span = f.fold_span(node.span());
2244     let mut node = node;
2245     node.set_span(span);
2246     node
2247 }
2248 #[cfg(any(feature = "derive", feature = "full"))]
fold_lit_float<F>(f: &mut F, node: LitFloat) -> LitFloat where F: Fold + ?Sized,2249 pub fn fold_lit_float<F>(f: &mut F, node: LitFloat) -> LitFloat
2250 where
2251     F: Fold + ?Sized,
2252 {
2253     let span = f.fold_span(node.span());
2254     let mut node = node;
2255     node.set_span(span);
2256     node
2257 }
2258 #[cfg(any(feature = "derive", feature = "full"))]
fold_lit_int<F>(f: &mut F, node: LitInt) -> LitInt where F: Fold + ?Sized,2259 pub fn fold_lit_int<F>(f: &mut F, node: LitInt) -> LitInt
2260 where
2261     F: Fold + ?Sized,
2262 {
2263     let span = f.fold_span(node.span());
2264     let mut node = node;
2265     node.set_span(span);
2266     node
2267 }
2268 #[cfg(any(feature = "derive", feature = "full"))]
fold_lit_str<F>(f: &mut F, node: LitStr) -> LitStr where F: Fold + ?Sized,2269 pub fn fold_lit_str<F>(f: &mut F, node: LitStr) -> LitStr
2270 where
2271     F: Fold + ?Sized,
2272 {
2273     let span = f.fold_span(node.span());
2274     let mut node = node;
2275     node.set_span(span);
2276     node
2277 }
2278 #[cfg(feature = "full")]
fold_local<F>(f: &mut F, node: Local) -> Local where F: Fold + ?Sized,2279 pub fn fold_local<F>(f: &mut F, node: Local) -> Local
2280 where
2281     F: Fold + ?Sized,
2282 {
2283     Local {
2284         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
2285         let_token: Token![let](tokens_helper(f, &node.let_token.span)),
2286         pat: f.fold_pat(node.pat),
2287         init: (node.init).map(|it| {
2288             (
2289                 Token ! [ = ](tokens_helper(f, &(it).0.spans)),
2290                 Box::new(f.fold_expr(*(it).1)),
2291             )
2292         }),
2293         semi_token: Token ! [ ; ](tokens_helper(f, &node.semi_token.spans)),
2294     }
2295 }
2296 #[cfg(any(feature = "derive", feature = "full"))]
fold_macro<F>(f: &mut F, node: Macro) -> Macro where F: Fold + ?Sized,2297 pub fn fold_macro<F>(f: &mut F, node: Macro) -> Macro
2298 where
2299     F: Fold + ?Sized,
2300 {
2301     Macro {
2302         path: f.fold_path(node.path),
2303         bang_token: Token![!](tokens_helper(f, &node.bang_token.spans)),
2304         delimiter: f.fold_macro_delimiter(node.delimiter),
2305         tokens: node.tokens,
2306     }
2307 }
2308 #[cfg(any(feature = "derive", feature = "full"))]
fold_macro_delimiter<F>(f: &mut F, node: MacroDelimiter) -> MacroDelimiter where F: Fold + ?Sized,2309 pub fn fold_macro_delimiter<F>(f: &mut F, node: MacroDelimiter) -> MacroDelimiter
2310 where
2311     F: Fold + ?Sized,
2312 {
2313     match node {
2314         MacroDelimiter::Paren(_binding_0) => {
2315             MacroDelimiter::Paren(Paren(tokens_helper(f, &_binding_0.span)))
2316         }
2317         MacroDelimiter::Brace(_binding_0) => {
2318             MacroDelimiter::Brace(Brace(tokens_helper(f, &_binding_0.span)))
2319         }
2320         MacroDelimiter::Bracket(_binding_0) => {
2321             MacroDelimiter::Bracket(Bracket(tokens_helper(f, &_binding_0.span)))
2322         }
2323     }
2324 }
2325 #[cfg(any(feature = "derive", feature = "full"))]
fold_member<F>(f: &mut F, node: Member) -> Member where F: Fold + ?Sized,2326 pub fn fold_member<F>(f: &mut F, node: Member) -> Member
2327 where
2328     F: Fold + ?Sized,
2329 {
2330     match node {
2331         Member::Named(_binding_0) => Member::Named(f.fold_ident(_binding_0)),
2332         Member::Unnamed(_binding_0) => Member::Unnamed(f.fold_index(_binding_0)),
2333     }
2334 }
2335 #[cfg(any(feature = "derive", feature = "full"))]
fold_meta<F>(f: &mut F, node: Meta) -> Meta where F: Fold + ?Sized,2336 pub fn fold_meta<F>(f: &mut F, node: Meta) -> Meta
2337 where
2338     F: Fold + ?Sized,
2339 {
2340     match node {
2341         Meta::Path(_binding_0) => Meta::Path(f.fold_path(_binding_0)),
2342         Meta::List(_binding_0) => Meta::List(f.fold_meta_list(_binding_0)),
2343         Meta::NameValue(_binding_0) => Meta::NameValue(f.fold_meta_name_value(_binding_0)),
2344     }
2345 }
2346 #[cfg(any(feature = "derive", feature = "full"))]
fold_meta_list<F>(f: &mut F, node: MetaList) -> MetaList where F: Fold + ?Sized,2347 pub fn fold_meta_list<F>(f: &mut F, node: MetaList) -> MetaList
2348 where
2349     F: Fold + ?Sized,
2350 {
2351     MetaList {
2352         path: f.fold_path(node.path),
2353         paren_token: Paren(tokens_helper(f, &node.paren_token.span)),
2354         nested: FoldHelper::lift(node.nested, |it| f.fold_nested_meta(it)),
2355     }
2356 }
2357 #[cfg(any(feature = "derive", feature = "full"))]
fold_meta_name_value<F>(f: &mut F, node: MetaNameValue) -> MetaNameValue where F: Fold + ?Sized,2358 pub fn fold_meta_name_value<F>(f: &mut F, node: MetaNameValue) -> MetaNameValue
2359 where
2360     F: Fold + ?Sized,
2361 {
2362     MetaNameValue {
2363         path: f.fold_path(node.path),
2364         eq_token: Token ! [ = ](tokens_helper(f, &node.eq_token.spans)),
2365         lit: f.fold_lit(node.lit),
2366     }
2367 }
2368 #[cfg(feature = "full")]
fold_method_turbofish<F>(f: &mut F, node: MethodTurbofish) -> MethodTurbofish where F: Fold + ?Sized,2369 pub fn fold_method_turbofish<F>(f: &mut F, node: MethodTurbofish) -> MethodTurbofish
2370 where
2371     F: Fold + ?Sized,
2372 {
2373     MethodTurbofish {
2374         colon2_token: Token ! [ :: ](tokens_helper(f, &node.colon2_token.spans)),
2375         lt_token: Token ! [ < ](tokens_helper(f, &node.lt_token.spans)),
2376         args: FoldHelper::lift(node.args, |it| f.fold_generic_method_argument(it)),
2377         gt_token: Token ! [ > ](tokens_helper(f, &node.gt_token.spans)),
2378     }
2379 }
2380 #[cfg(any(feature = "derive", feature = "full"))]
fold_nested_meta<F>(f: &mut F, node: NestedMeta) -> NestedMeta where F: Fold + ?Sized,2381 pub fn fold_nested_meta<F>(f: &mut F, node: NestedMeta) -> NestedMeta
2382 where
2383     F: Fold + ?Sized,
2384 {
2385     match node {
2386         NestedMeta::Meta(_binding_0) => NestedMeta::Meta(f.fold_meta(_binding_0)),
2387         NestedMeta::Lit(_binding_0) => NestedMeta::Lit(f.fold_lit(_binding_0)),
2388     }
2389 }
2390 #[cfg(any(feature = "derive", feature = "full"))]
fold_parenthesized_generic_arguments<F>( f: &mut F, node: ParenthesizedGenericArguments, ) -> ParenthesizedGenericArguments where F: Fold + ?Sized,2391 pub fn fold_parenthesized_generic_arguments<F>(
2392     f: &mut F,
2393     node: ParenthesizedGenericArguments,
2394 ) -> ParenthesizedGenericArguments
2395 where
2396     F: Fold + ?Sized,
2397 {
2398     ParenthesizedGenericArguments {
2399         paren_token: Paren(tokens_helper(f, &node.paren_token.span)),
2400         inputs: FoldHelper::lift(node.inputs, |it| f.fold_type(it)),
2401         output: f.fold_return_type(node.output),
2402     }
2403 }
2404 #[cfg(feature = "full")]
fold_pat<F>(f: &mut F, node: Pat) -> Pat where F: Fold + ?Sized,2405 pub fn fold_pat<F>(f: &mut F, node: Pat) -> Pat
2406 where
2407     F: Fold + ?Sized,
2408 {
2409     match node {
2410         Pat::Box(_binding_0) => Pat::Box(f.fold_pat_box(_binding_0)),
2411         Pat::Ident(_binding_0) => Pat::Ident(f.fold_pat_ident(_binding_0)),
2412         Pat::Lit(_binding_0) => Pat::Lit(f.fold_pat_lit(_binding_0)),
2413         Pat::Macro(_binding_0) => Pat::Macro(f.fold_pat_macro(_binding_0)),
2414         Pat::Or(_binding_0) => Pat::Or(f.fold_pat_or(_binding_0)),
2415         Pat::Path(_binding_0) => Pat::Path(f.fold_pat_path(_binding_0)),
2416         Pat::Range(_binding_0) => Pat::Range(f.fold_pat_range(_binding_0)),
2417         Pat::Reference(_binding_0) => Pat::Reference(f.fold_pat_reference(_binding_0)),
2418         Pat::Rest(_binding_0) => Pat::Rest(f.fold_pat_rest(_binding_0)),
2419         Pat::Slice(_binding_0) => Pat::Slice(f.fold_pat_slice(_binding_0)),
2420         Pat::Struct(_binding_0) => Pat::Struct(f.fold_pat_struct(_binding_0)),
2421         Pat::Tuple(_binding_0) => Pat::Tuple(f.fold_pat_tuple(_binding_0)),
2422         Pat::TupleStruct(_binding_0) => Pat::TupleStruct(f.fold_pat_tuple_struct(_binding_0)),
2423         Pat::Type(_binding_0) => Pat::Type(f.fold_pat_type(_binding_0)),
2424         Pat::Verbatim(_binding_0) => Pat::Verbatim(_binding_0),
2425         Pat::Wild(_binding_0) => Pat::Wild(f.fold_pat_wild(_binding_0)),
2426         _ => unreachable!(),
2427     }
2428 }
2429 #[cfg(feature = "full")]
fold_pat_box<F>(f: &mut F, node: PatBox) -> PatBox where F: Fold + ?Sized,2430 pub fn fold_pat_box<F>(f: &mut F, node: PatBox) -> PatBox
2431 where
2432     F: Fold + ?Sized,
2433 {
2434     PatBox {
2435         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
2436         box_token: Token![box](tokens_helper(f, &node.box_token.span)),
2437         pat: Box::new(f.fold_pat(*node.pat)),
2438     }
2439 }
2440 #[cfg(feature = "full")]
fold_pat_ident<F>(f: &mut F, node: PatIdent) -> PatIdent where F: Fold + ?Sized,2441 pub fn fold_pat_ident<F>(f: &mut F, node: PatIdent) -> PatIdent
2442 where
2443     F: Fold + ?Sized,
2444 {
2445     PatIdent {
2446         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
2447         by_ref: (node.by_ref).map(|it| Token![ref](tokens_helper(f, &it.span))),
2448         mutability: (node.mutability).map(|it| Token![mut](tokens_helper(f, &it.span))),
2449         ident: f.fold_ident(node.ident),
2450         subpat: (node.subpat).map(|it| {
2451             (
2452                 Token ! [ @ ](tokens_helper(f, &(it).0.spans)),
2453                 Box::new(f.fold_pat(*(it).1)),
2454             )
2455         }),
2456     }
2457 }
2458 #[cfg(feature = "full")]
fold_pat_lit<F>(f: &mut F, node: PatLit) -> PatLit where F: Fold + ?Sized,2459 pub fn fold_pat_lit<F>(f: &mut F, node: PatLit) -> PatLit
2460 where
2461     F: Fold + ?Sized,
2462 {
2463     PatLit {
2464         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
2465         expr: Box::new(f.fold_expr(*node.expr)),
2466     }
2467 }
2468 #[cfg(feature = "full")]
fold_pat_macro<F>(f: &mut F, node: PatMacro) -> PatMacro where F: Fold + ?Sized,2469 pub fn fold_pat_macro<F>(f: &mut F, node: PatMacro) -> PatMacro
2470 where
2471     F: Fold + ?Sized,
2472 {
2473     PatMacro {
2474         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
2475         mac: f.fold_macro(node.mac),
2476     }
2477 }
2478 #[cfg(feature = "full")]
fold_pat_or<F>(f: &mut F, node: PatOr) -> PatOr where F: Fold + ?Sized,2479 pub fn fold_pat_or<F>(f: &mut F, node: PatOr) -> PatOr
2480 where
2481     F: Fold + ?Sized,
2482 {
2483     PatOr {
2484         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
2485         leading_vert: (node.leading_vert).map(|it| Token ! [ | ](tokens_helper(f, &it.spans))),
2486         cases: FoldHelper::lift(node.cases, |it| f.fold_pat(it)),
2487     }
2488 }
2489 #[cfg(feature = "full")]
fold_pat_path<F>(f: &mut F, node: PatPath) -> PatPath where F: Fold + ?Sized,2490 pub fn fold_pat_path<F>(f: &mut F, node: PatPath) -> PatPath
2491 where
2492     F: Fold + ?Sized,
2493 {
2494     PatPath {
2495         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
2496         qself: (node.qself).map(|it| f.fold_qself(it)),
2497         path: f.fold_path(node.path),
2498     }
2499 }
2500 #[cfg(feature = "full")]
fold_pat_range<F>(f: &mut F, node: PatRange) -> PatRange where F: Fold + ?Sized,2501 pub fn fold_pat_range<F>(f: &mut F, node: PatRange) -> PatRange
2502 where
2503     F: Fold + ?Sized,
2504 {
2505     PatRange {
2506         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
2507         lo: Box::new(f.fold_expr(*node.lo)),
2508         limits: f.fold_range_limits(node.limits),
2509         hi: Box::new(f.fold_expr(*node.hi)),
2510     }
2511 }
2512 #[cfg(feature = "full")]
fold_pat_reference<F>(f: &mut F, node: PatReference) -> PatReference where F: Fold + ?Sized,2513 pub fn fold_pat_reference<F>(f: &mut F, node: PatReference) -> PatReference
2514 where
2515     F: Fold + ?Sized,
2516 {
2517     PatReference {
2518         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
2519         and_token: Token ! [ & ](tokens_helper(f, &node.and_token.spans)),
2520         mutability: (node.mutability).map(|it| Token![mut](tokens_helper(f, &it.span))),
2521         pat: Box::new(f.fold_pat(*node.pat)),
2522     }
2523 }
2524 #[cfg(feature = "full")]
fold_pat_rest<F>(f: &mut F, node: PatRest) -> PatRest where F: Fold + ?Sized,2525 pub fn fold_pat_rest<F>(f: &mut F, node: PatRest) -> PatRest
2526 where
2527     F: Fold + ?Sized,
2528 {
2529     PatRest {
2530         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
2531         dot2_token: Token![..](tokens_helper(f, &node.dot2_token.spans)),
2532     }
2533 }
2534 #[cfg(feature = "full")]
fold_pat_slice<F>(f: &mut F, node: PatSlice) -> PatSlice where F: Fold + ?Sized,2535 pub fn fold_pat_slice<F>(f: &mut F, node: PatSlice) -> PatSlice
2536 where
2537     F: Fold + ?Sized,
2538 {
2539     PatSlice {
2540         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
2541         bracket_token: Bracket(tokens_helper(f, &node.bracket_token.span)),
2542         elems: FoldHelper::lift(node.elems, |it| f.fold_pat(it)),
2543     }
2544 }
2545 #[cfg(feature = "full")]
fold_pat_struct<F>(f: &mut F, node: PatStruct) -> PatStruct where F: Fold + ?Sized,2546 pub fn fold_pat_struct<F>(f: &mut F, node: PatStruct) -> PatStruct
2547 where
2548     F: Fold + ?Sized,
2549 {
2550     PatStruct {
2551         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
2552         path: f.fold_path(node.path),
2553         brace_token: Brace(tokens_helper(f, &node.brace_token.span)),
2554         fields: FoldHelper::lift(node.fields, |it| f.fold_field_pat(it)),
2555         dot2_token: (node.dot2_token).map(|it| Token![..](tokens_helper(f, &it.spans))),
2556     }
2557 }
2558 #[cfg(feature = "full")]
fold_pat_tuple<F>(f: &mut F, node: PatTuple) -> PatTuple where F: Fold + ?Sized,2559 pub fn fold_pat_tuple<F>(f: &mut F, node: PatTuple) -> PatTuple
2560 where
2561     F: Fold + ?Sized,
2562 {
2563     PatTuple {
2564         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
2565         paren_token: Paren(tokens_helper(f, &node.paren_token.span)),
2566         elems: FoldHelper::lift(node.elems, |it| f.fold_pat(it)),
2567     }
2568 }
2569 #[cfg(feature = "full")]
fold_pat_tuple_struct<F>(f: &mut F, node: PatTupleStruct) -> PatTupleStruct where F: Fold + ?Sized,2570 pub fn fold_pat_tuple_struct<F>(f: &mut F, node: PatTupleStruct) -> PatTupleStruct
2571 where
2572     F: Fold + ?Sized,
2573 {
2574     PatTupleStruct {
2575         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
2576         path: f.fold_path(node.path),
2577         pat: f.fold_pat_tuple(node.pat),
2578     }
2579 }
2580 #[cfg(feature = "full")]
fold_pat_type<F>(f: &mut F, node: PatType) -> PatType where F: Fold + ?Sized,2581 pub fn fold_pat_type<F>(f: &mut F, node: PatType) -> PatType
2582 where
2583     F: Fold + ?Sized,
2584 {
2585     PatType {
2586         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
2587         pat: Box::new(f.fold_pat(*node.pat)),
2588         colon_token: Token ! [ : ](tokens_helper(f, &node.colon_token.spans)),
2589         ty: Box::new(f.fold_type(*node.ty)),
2590     }
2591 }
2592 #[cfg(feature = "full")]
fold_pat_wild<F>(f: &mut F, node: PatWild) -> PatWild where F: Fold + ?Sized,2593 pub fn fold_pat_wild<F>(f: &mut F, node: PatWild) -> PatWild
2594 where
2595     F: Fold + ?Sized,
2596 {
2597     PatWild {
2598         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
2599         underscore_token: Token![_](tokens_helper(f, &node.underscore_token.spans)),
2600     }
2601 }
2602 #[cfg(any(feature = "derive", feature = "full"))]
fold_path<F>(f: &mut F, node: Path) -> Path where F: Fold + ?Sized,2603 pub fn fold_path<F>(f: &mut F, node: Path) -> Path
2604 where
2605     F: Fold + ?Sized,
2606 {
2607     Path {
2608         leading_colon: (node.leading_colon).map(|it| Token ! [ :: ](tokens_helper(f, &it.spans))),
2609         segments: FoldHelper::lift(node.segments, |it| f.fold_path_segment(it)),
2610     }
2611 }
2612 #[cfg(any(feature = "derive", feature = "full"))]
fold_path_arguments<F>(f: &mut F, node: PathArguments) -> PathArguments where F: Fold + ?Sized,2613 pub fn fold_path_arguments<F>(f: &mut F, node: PathArguments) -> PathArguments
2614 where
2615     F: Fold + ?Sized,
2616 {
2617     match node {
2618         PathArguments::None => PathArguments::None,
2619         PathArguments::AngleBracketed(_binding_0) => {
2620             PathArguments::AngleBracketed(f.fold_angle_bracketed_generic_arguments(_binding_0))
2621         }
2622         PathArguments::Parenthesized(_binding_0) => {
2623             PathArguments::Parenthesized(f.fold_parenthesized_generic_arguments(_binding_0))
2624         }
2625     }
2626 }
2627 #[cfg(any(feature = "derive", feature = "full"))]
fold_path_segment<F>(f: &mut F, node: PathSegment) -> PathSegment where F: Fold + ?Sized,2628 pub fn fold_path_segment<F>(f: &mut F, node: PathSegment) -> PathSegment
2629 where
2630     F: Fold + ?Sized,
2631 {
2632     PathSegment {
2633         ident: f.fold_ident(node.ident),
2634         arguments: f.fold_path_arguments(node.arguments),
2635     }
2636 }
2637 #[cfg(any(feature = "derive", feature = "full"))]
fold_predicate_eq<F>(f: &mut F, node: PredicateEq) -> PredicateEq where F: Fold + ?Sized,2638 pub fn fold_predicate_eq<F>(f: &mut F, node: PredicateEq) -> PredicateEq
2639 where
2640     F: Fold + ?Sized,
2641 {
2642     PredicateEq {
2643         lhs_ty: f.fold_type(node.lhs_ty),
2644         eq_token: Token ! [ = ](tokens_helper(f, &node.eq_token.spans)),
2645         rhs_ty: f.fold_type(node.rhs_ty),
2646     }
2647 }
2648 #[cfg(any(feature = "derive", feature = "full"))]
fold_predicate_lifetime<F>(f: &mut F, node: PredicateLifetime) -> PredicateLifetime where F: Fold + ?Sized,2649 pub fn fold_predicate_lifetime<F>(f: &mut F, node: PredicateLifetime) -> PredicateLifetime
2650 where
2651     F: Fold + ?Sized,
2652 {
2653     PredicateLifetime {
2654         lifetime: f.fold_lifetime(node.lifetime),
2655         colon_token: Token ! [ : ](tokens_helper(f, &node.colon_token.spans)),
2656         bounds: FoldHelper::lift(node.bounds, |it| f.fold_lifetime(it)),
2657     }
2658 }
2659 #[cfg(any(feature = "derive", feature = "full"))]
fold_predicate_type<F>(f: &mut F, node: PredicateType) -> PredicateType where F: Fold + ?Sized,2660 pub fn fold_predicate_type<F>(f: &mut F, node: PredicateType) -> PredicateType
2661 where
2662     F: Fold + ?Sized,
2663 {
2664     PredicateType {
2665         lifetimes: (node.lifetimes).map(|it| f.fold_bound_lifetimes(it)),
2666         bounded_ty: f.fold_type(node.bounded_ty),
2667         colon_token: Token ! [ : ](tokens_helper(f, &node.colon_token.spans)),
2668         bounds: FoldHelper::lift(node.bounds, |it| f.fold_type_param_bound(it)),
2669     }
2670 }
2671 #[cfg(any(feature = "derive", feature = "full"))]
fold_qself<F>(f: &mut F, node: QSelf) -> QSelf where F: Fold + ?Sized,2672 pub fn fold_qself<F>(f: &mut F, node: QSelf) -> QSelf
2673 where
2674     F: Fold + ?Sized,
2675 {
2676     QSelf {
2677         lt_token: Token ! [ < ](tokens_helper(f, &node.lt_token.spans)),
2678         ty: Box::new(f.fold_type(*node.ty)),
2679         position: node.position,
2680         as_token: (node.as_token).map(|it| Token![as](tokens_helper(f, &it.span))),
2681         gt_token: Token ! [ > ](tokens_helper(f, &node.gt_token.spans)),
2682     }
2683 }
2684 #[cfg(feature = "full")]
fold_range_limits<F>(f: &mut F, node: RangeLimits) -> RangeLimits where F: Fold + ?Sized,2685 pub fn fold_range_limits<F>(f: &mut F, node: RangeLimits) -> RangeLimits
2686 where
2687     F: Fold + ?Sized,
2688 {
2689     match node {
2690         RangeLimits::HalfOpen(_binding_0) => {
2691             RangeLimits::HalfOpen(Token![..](tokens_helper(f, &_binding_0.spans)))
2692         }
2693         RangeLimits::Closed(_binding_0) => {
2694             RangeLimits::Closed(Token ! [ ..= ](tokens_helper(f, &_binding_0.spans)))
2695         }
2696     }
2697 }
2698 #[cfg(feature = "full")]
fold_receiver<F>(f: &mut F, node: Receiver) -> Receiver where F: Fold + ?Sized,2699 pub fn fold_receiver<F>(f: &mut F, node: Receiver) -> Receiver
2700 where
2701     F: Fold + ?Sized,
2702 {
2703     Receiver {
2704         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
2705         reference: (node.reference).map(|it| {
2706             (
2707                 Token ! [ & ](tokens_helper(f, &(it).0.spans)),
2708                 ((it).1).map(|it| f.fold_lifetime(it)),
2709             )
2710         }),
2711         mutability: (node.mutability).map(|it| Token![mut](tokens_helper(f, &it.span))),
2712         self_token: Token![self](tokens_helper(f, &node.self_token.span)),
2713     }
2714 }
2715 #[cfg(any(feature = "derive", feature = "full"))]
fold_return_type<F>(f: &mut F, node: ReturnType) -> ReturnType where F: Fold + ?Sized,2716 pub fn fold_return_type<F>(f: &mut F, node: ReturnType) -> ReturnType
2717 where
2718     F: Fold + ?Sized,
2719 {
2720     match node {
2721         ReturnType::Default => ReturnType::Default,
2722         ReturnType::Type(_binding_0, _binding_1) => ReturnType::Type(
2723             Token ! [ -> ](tokens_helper(f, &_binding_0.spans)),
2724             Box::new(f.fold_type(*_binding_1)),
2725         ),
2726     }
2727 }
2728 #[cfg(feature = "full")]
fold_signature<F>(f: &mut F, node: Signature) -> Signature where F: Fold + ?Sized,2729 pub fn fold_signature<F>(f: &mut F, node: Signature) -> Signature
2730 where
2731     F: Fold + ?Sized,
2732 {
2733     Signature {
2734         constness: (node.constness).map(|it| Token![const](tokens_helper(f, &it.span))),
2735         asyncness: (node.asyncness).map(|it| Token![async](tokens_helper(f, &it.span))),
2736         unsafety: (node.unsafety).map(|it| Token![unsafe](tokens_helper(f, &it.span))),
2737         abi: (node.abi).map(|it| f.fold_abi(it)),
2738         fn_token: Token![fn](tokens_helper(f, &node.fn_token.span)),
2739         ident: f.fold_ident(node.ident),
2740         generics: f.fold_generics(node.generics),
2741         paren_token: Paren(tokens_helper(f, &node.paren_token.span)),
2742         inputs: FoldHelper::lift(node.inputs, |it| f.fold_fn_arg(it)),
2743         variadic: (node.variadic).map(|it| f.fold_variadic(it)),
2744         output: f.fold_return_type(node.output),
2745     }
2746 }
fold_span<F>(f: &mut F, node: Span) -> Span where F: Fold + ?Sized,2747 pub fn fold_span<F>(f: &mut F, node: Span) -> Span
2748 where
2749     F: Fold + ?Sized,
2750 {
2751     node
2752 }
2753 #[cfg(feature = "full")]
fold_stmt<F>(f: &mut F, node: Stmt) -> Stmt where F: Fold + ?Sized,2754 pub fn fold_stmt<F>(f: &mut F, node: Stmt) -> Stmt
2755 where
2756     F: Fold + ?Sized,
2757 {
2758     match node {
2759         Stmt::Local(_binding_0) => Stmt::Local(f.fold_local(_binding_0)),
2760         Stmt::Item(_binding_0) => Stmt::Item(f.fold_item(_binding_0)),
2761         Stmt::Expr(_binding_0) => Stmt::Expr(f.fold_expr(_binding_0)),
2762         Stmt::Semi(_binding_0, _binding_1) => Stmt::Semi(
2763             f.fold_expr(_binding_0),
2764             Token ! [ ; ](tokens_helper(f, &_binding_1.spans)),
2765         ),
2766     }
2767 }
2768 #[cfg(any(feature = "derive", feature = "full"))]
fold_trait_bound<F>(f: &mut F, node: TraitBound) -> TraitBound where F: Fold + ?Sized,2769 pub fn fold_trait_bound<F>(f: &mut F, node: TraitBound) -> TraitBound
2770 where
2771     F: Fold + ?Sized,
2772 {
2773     TraitBound {
2774         paren_token: (node.paren_token).map(|it| Paren(tokens_helper(f, &it.span))),
2775         modifier: f.fold_trait_bound_modifier(node.modifier),
2776         lifetimes: (node.lifetimes).map(|it| f.fold_bound_lifetimes(it)),
2777         path: f.fold_path(node.path),
2778     }
2779 }
2780 #[cfg(any(feature = "derive", feature = "full"))]
fold_trait_bound_modifier<F>(f: &mut F, node: TraitBoundModifier) -> TraitBoundModifier where F: Fold + ?Sized,2781 pub fn fold_trait_bound_modifier<F>(f: &mut F, node: TraitBoundModifier) -> TraitBoundModifier
2782 where
2783     F: Fold + ?Sized,
2784 {
2785     match node {
2786         TraitBoundModifier::None => TraitBoundModifier::None,
2787         TraitBoundModifier::Maybe(_binding_0) => {
2788             TraitBoundModifier::Maybe(Token ! [ ? ](tokens_helper(f, &_binding_0.spans)))
2789         }
2790     }
2791 }
2792 #[cfg(feature = "full")]
fold_trait_item<F>(f: &mut F, node: TraitItem) -> TraitItem where F: Fold + ?Sized,2793 pub fn fold_trait_item<F>(f: &mut F, node: TraitItem) -> TraitItem
2794 where
2795     F: Fold + ?Sized,
2796 {
2797     match node {
2798         TraitItem::Const(_binding_0) => TraitItem::Const(f.fold_trait_item_const(_binding_0)),
2799         TraitItem::Method(_binding_0) => TraitItem::Method(f.fold_trait_item_method(_binding_0)),
2800         TraitItem::Type(_binding_0) => TraitItem::Type(f.fold_trait_item_type(_binding_0)),
2801         TraitItem::Macro(_binding_0) => TraitItem::Macro(f.fold_trait_item_macro(_binding_0)),
2802         TraitItem::Verbatim(_binding_0) => TraitItem::Verbatim(_binding_0),
2803         _ => unreachable!(),
2804     }
2805 }
2806 #[cfg(feature = "full")]
fold_trait_item_const<F>(f: &mut F, node: TraitItemConst) -> TraitItemConst where F: Fold + ?Sized,2807 pub fn fold_trait_item_const<F>(f: &mut F, node: TraitItemConst) -> TraitItemConst
2808 where
2809     F: Fold + ?Sized,
2810 {
2811     TraitItemConst {
2812         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
2813         const_token: Token![const](tokens_helper(f, &node.const_token.span)),
2814         ident: f.fold_ident(node.ident),
2815         colon_token: Token ! [ : ](tokens_helper(f, &node.colon_token.spans)),
2816         ty: f.fold_type(node.ty),
2817         default: (node.default).map(|it| {
2818             (
2819                 Token ! [ = ](tokens_helper(f, &(it).0.spans)),
2820                 f.fold_expr((it).1),
2821             )
2822         }),
2823         semi_token: Token ! [ ; ](tokens_helper(f, &node.semi_token.spans)),
2824     }
2825 }
2826 #[cfg(feature = "full")]
fold_trait_item_macro<F>(f: &mut F, node: TraitItemMacro) -> TraitItemMacro where F: Fold + ?Sized,2827 pub fn fold_trait_item_macro<F>(f: &mut F, node: TraitItemMacro) -> TraitItemMacro
2828 where
2829     F: Fold + ?Sized,
2830 {
2831     TraitItemMacro {
2832         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
2833         mac: f.fold_macro(node.mac),
2834         semi_token: (node.semi_token).map(|it| Token ! [ ; ](tokens_helper(f, &it.spans))),
2835     }
2836 }
2837 #[cfg(feature = "full")]
fold_trait_item_method<F>(f: &mut F, node: TraitItemMethod) -> TraitItemMethod where F: Fold + ?Sized,2838 pub fn fold_trait_item_method<F>(f: &mut F, node: TraitItemMethod) -> TraitItemMethod
2839 where
2840     F: Fold + ?Sized,
2841 {
2842     TraitItemMethod {
2843         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
2844         sig: f.fold_signature(node.sig),
2845         default: (node.default).map(|it| f.fold_block(it)),
2846         semi_token: (node.semi_token).map(|it| Token ! [ ; ](tokens_helper(f, &it.spans))),
2847     }
2848 }
2849 #[cfg(feature = "full")]
fold_trait_item_type<F>(f: &mut F, node: TraitItemType) -> TraitItemType where F: Fold + ?Sized,2850 pub fn fold_trait_item_type<F>(f: &mut F, node: TraitItemType) -> TraitItemType
2851 where
2852     F: Fold + ?Sized,
2853 {
2854     TraitItemType {
2855         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
2856         type_token: Token![type](tokens_helper(f, &node.type_token.span)),
2857         ident: f.fold_ident(node.ident),
2858         generics: f.fold_generics(node.generics),
2859         colon_token: (node.colon_token).map(|it| Token ! [ : ](tokens_helper(f, &it.spans))),
2860         bounds: FoldHelper::lift(node.bounds, |it| f.fold_type_param_bound(it)),
2861         default: (node.default).map(|it| {
2862             (
2863                 Token ! [ = ](tokens_helper(f, &(it).0.spans)),
2864                 f.fold_type((it).1),
2865             )
2866         }),
2867         semi_token: Token ! [ ; ](tokens_helper(f, &node.semi_token.spans)),
2868     }
2869 }
2870 #[cfg(any(feature = "derive", feature = "full"))]
fold_type<F>(f: &mut F, node: Type) -> Type where F: Fold + ?Sized,2871 pub fn fold_type<F>(f: &mut F, node: Type) -> Type
2872 where
2873     F: Fold + ?Sized,
2874 {
2875     match node {
2876         Type::Array(_binding_0) => Type::Array(f.fold_type_array(_binding_0)),
2877         Type::BareFn(_binding_0) => Type::BareFn(f.fold_type_bare_fn(_binding_0)),
2878         Type::Group(_binding_0) => Type::Group(f.fold_type_group(_binding_0)),
2879         Type::ImplTrait(_binding_0) => Type::ImplTrait(f.fold_type_impl_trait(_binding_0)),
2880         Type::Infer(_binding_0) => Type::Infer(f.fold_type_infer(_binding_0)),
2881         Type::Macro(_binding_0) => Type::Macro(f.fold_type_macro(_binding_0)),
2882         Type::Never(_binding_0) => Type::Never(f.fold_type_never(_binding_0)),
2883         Type::Paren(_binding_0) => Type::Paren(f.fold_type_paren(_binding_0)),
2884         Type::Path(_binding_0) => Type::Path(f.fold_type_path(_binding_0)),
2885         Type::Ptr(_binding_0) => Type::Ptr(f.fold_type_ptr(_binding_0)),
2886         Type::Reference(_binding_0) => Type::Reference(f.fold_type_reference(_binding_0)),
2887         Type::Slice(_binding_0) => Type::Slice(f.fold_type_slice(_binding_0)),
2888         Type::TraitObject(_binding_0) => Type::TraitObject(f.fold_type_trait_object(_binding_0)),
2889         Type::Tuple(_binding_0) => Type::Tuple(f.fold_type_tuple(_binding_0)),
2890         Type::Verbatim(_binding_0) => Type::Verbatim(_binding_0),
2891         _ => unreachable!(),
2892     }
2893 }
2894 #[cfg(any(feature = "derive", feature = "full"))]
fold_type_array<F>(f: &mut F, node: TypeArray) -> TypeArray where F: Fold + ?Sized,2895 pub fn fold_type_array<F>(f: &mut F, node: TypeArray) -> TypeArray
2896 where
2897     F: Fold + ?Sized,
2898 {
2899     TypeArray {
2900         bracket_token: Bracket(tokens_helper(f, &node.bracket_token.span)),
2901         elem: Box::new(f.fold_type(*node.elem)),
2902         semi_token: Token ! [ ; ](tokens_helper(f, &node.semi_token.spans)),
2903         len: f.fold_expr(node.len),
2904     }
2905 }
2906 #[cfg(any(feature = "derive", feature = "full"))]
fold_type_bare_fn<F>(f: &mut F, node: TypeBareFn) -> TypeBareFn where F: Fold + ?Sized,2907 pub fn fold_type_bare_fn<F>(f: &mut F, node: TypeBareFn) -> TypeBareFn
2908 where
2909     F: Fold + ?Sized,
2910 {
2911     TypeBareFn {
2912         lifetimes: (node.lifetimes).map(|it| f.fold_bound_lifetimes(it)),
2913         unsafety: (node.unsafety).map(|it| Token![unsafe](tokens_helper(f, &it.span))),
2914         abi: (node.abi).map(|it| f.fold_abi(it)),
2915         fn_token: Token![fn](tokens_helper(f, &node.fn_token.span)),
2916         paren_token: Paren(tokens_helper(f, &node.paren_token.span)),
2917         inputs: FoldHelper::lift(node.inputs, |it| f.fold_bare_fn_arg(it)),
2918         variadic: (node.variadic).map(|it| f.fold_variadic(it)),
2919         output: f.fold_return_type(node.output),
2920     }
2921 }
2922 #[cfg(any(feature = "derive", feature = "full"))]
fold_type_group<F>(f: &mut F, node: TypeGroup) -> TypeGroup where F: Fold + ?Sized,2923 pub fn fold_type_group<F>(f: &mut F, node: TypeGroup) -> TypeGroup
2924 where
2925     F: Fold + ?Sized,
2926 {
2927     TypeGroup {
2928         group_token: Group(tokens_helper(f, &node.group_token.span)),
2929         elem: Box::new(f.fold_type(*node.elem)),
2930     }
2931 }
2932 #[cfg(any(feature = "derive", feature = "full"))]
fold_type_impl_trait<F>(f: &mut F, node: TypeImplTrait) -> TypeImplTrait where F: Fold + ?Sized,2933 pub fn fold_type_impl_trait<F>(f: &mut F, node: TypeImplTrait) -> TypeImplTrait
2934 where
2935     F: Fold + ?Sized,
2936 {
2937     TypeImplTrait {
2938         impl_token: Token![impl](tokens_helper(f, &node.impl_token.span)),
2939         bounds: FoldHelper::lift(node.bounds, |it| f.fold_type_param_bound(it)),
2940     }
2941 }
2942 #[cfg(any(feature = "derive", feature = "full"))]
fold_type_infer<F>(f: &mut F, node: TypeInfer) -> TypeInfer where F: Fold + ?Sized,2943 pub fn fold_type_infer<F>(f: &mut F, node: TypeInfer) -> TypeInfer
2944 where
2945     F: Fold + ?Sized,
2946 {
2947     TypeInfer {
2948         underscore_token: Token![_](tokens_helper(f, &node.underscore_token.spans)),
2949     }
2950 }
2951 #[cfg(any(feature = "derive", feature = "full"))]
fold_type_macro<F>(f: &mut F, node: TypeMacro) -> TypeMacro where F: Fold + ?Sized,2952 pub fn fold_type_macro<F>(f: &mut F, node: TypeMacro) -> TypeMacro
2953 where
2954     F: Fold + ?Sized,
2955 {
2956     TypeMacro {
2957         mac: f.fold_macro(node.mac),
2958     }
2959 }
2960 #[cfg(any(feature = "derive", feature = "full"))]
fold_type_never<F>(f: &mut F, node: TypeNever) -> TypeNever where F: Fold + ?Sized,2961 pub fn fold_type_never<F>(f: &mut F, node: TypeNever) -> TypeNever
2962 where
2963     F: Fold + ?Sized,
2964 {
2965     TypeNever {
2966         bang_token: Token![!](tokens_helper(f, &node.bang_token.spans)),
2967     }
2968 }
2969 #[cfg(any(feature = "derive", feature = "full"))]
fold_type_param<F>(f: &mut F, node: TypeParam) -> TypeParam where F: Fold + ?Sized,2970 pub fn fold_type_param<F>(f: &mut F, node: TypeParam) -> TypeParam
2971 where
2972     F: Fold + ?Sized,
2973 {
2974     TypeParam {
2975         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
2976         ident: f.fold_ident(node.ident),
2977         colon_token: (node.colon_token).map(|it| Token ! [ : ](tokens_helper(f, &it.spans))),
2978         bounds: FoldHelper::lift(node.bounds, |it| f.fold_type_param_bound(it)),
2979         eq_token: (node.eq_token).map(|it| Token ! [ = ](tokens_helper(f, &it.spans))),
2980         default: (node.default).map(|it| f.fold_type(it)),
2981     }
2982 }
2983 #[cfg(any(feature = "derive", feature = "full"))]
fold_type_param_bound<F>(f: &mut F, node: TypeParamBound) -> TypeParamBound where F: Fold + ?Sized,2984 pub fn fold_type_param_bound<F>(f: &mut F, node: TypeParamBound) -> TypeParamBound
2985 where
2986     F: Fold + ?Sized,
2987 {
2988     match node {
2989         TypeParamBound::Trait(_binding_0) => TypeParamBound::Trait(f.fold_trait_bound(_binding_0)),
2990         TypeParamBound::Lifetime(_binding_0) => {
2991             TypeParamBound::Lifetime(f.fold_lifetime(_binding_0))
2992         }
2993     }
2994 }
2995 #[cfg(any(feature = "derive", feature = "full"))]
fold_type_paren<F>(f: &mut F, node: TypeParen) -> TypeParen where F: Fold + ?Sized,2996 pub fn fold_type_paren<F>(f: &mut F, node: TypeParen) -> TypeParen
2997 where
2998     F: Fold + ?Sized,
2999 {
3000     TypeParen {
3001         paren_token: Paren(tokens_helper(f, &node.paren_token.span)),
3002         elem: Box::new(f.fold_type(*node.elem)),
3003     }
3004 }
3005 #[cfg(any(feature = "derive", feature = "full"))]
fold_type_path<F>(f: &mut F, node: TypePath) -> TypePath where F: Fold + ?Sized,3006 pub fn fold_type_path<F>(f: &mut F, node: TypePath) -> TypePath
3007 where
3008     F: Fold + ?Sized,
3009 {
3010     TypePath {
3011         qself: (node.qself).map(|it| f.fold_qself(it)),
3012         path: f.fold_path(node.path),
3013     }
3014 }
3015 #[cfg(any(feature = "derive", feature = "full"))]
fold_type_ptr<F>(f: &mut F, node: TypePtr) -> TypePtr where F: Fold + ?Sized,3016 pub fn fold_type_ptr<F>(f: &mut F, node: TypePtr) -> TypePtr
3017 where
3018     F: Fold + ?Sized,
3019 {
3020     TypePtr {
3021         star_token: Token ! [ * ](tokens_helper(f, &node.star_token.spans)),
3022         const_token: (node.const_token).map(|it| Token![const](tokens_helper(f, &it.span))),
3023         mutability: (node.mutability).map(|it| Token![mut](tokens_helper(f, &it.span))),
3024         elem: Box::new(f.fold_type(*node.elem)),
3025     }
3026 }
3027 #[cfg(any(feature = "derive", feature = "full"))]
fold_type_reference<F>(f: &mut F, node: TypeReference) -> TypeReference where F: Fold + ?Sized,3028 pub fn fold_type_reference<F>(f: &mut F, node: TypeReference) -> TypeReference
3029 where
3030     F: Fold + ?Sized,
3031 {
3032     TypeReference {
3033         and_token: Token ! [ & ](tokens_helper(f, &node.and_token.spans)),
3034         lifetime: (node.lifetime).map(|it| f.fold_lifetime(it)),
3035         mutability: (node.mutability).map(|it| Token![mut](tokens_helper(f, &it.span))),
3036         elem: Box::new(f.fold_type(*node.elem)),
3037     }
3038 }
3039 #[cfg(any(feature = "derive", feature = "full"))]
fold_type_slice<F>(f: &mut F, node: TypeSlice) -> TypeSlice where F: Fold + ?Sized,3040 pub fn fold_type_slice<F>(f: &mut F, node: TypeSlice) -> TypeSlice
3041 where
3042     F: Fold + ?Sized,
3043 {
3044     TypeSlice {
3045         bracket_token: Bracket(tokens_helper(f, &node.bracket_token.span)),
3046         elem: Box::new(f.fold_type(*node.elem)),
3047     }
3048 }
3049 #[cfg(any(feature = "derive", feature = "full"))]
fold_type_trait_object<F>(f: &mut F, node: TypeTraitObject) -> TypeTraitObject where F: Fold + ?Sized,3050 pub fn fold_type_trait_object<F>(f: &mut F, node: TypeTraitObject) -> TypeTraitObject
3051 where
3052     F: Fold + ?Sized,
3053 {
3054     TypeTraitObject {
3055         dyn_token: (node.dyn_token).map(|it| Token![dyn](tokens_helper(f, &it.span))),
3056         bounds: FoldHelper::lift(node.bounds, |it| f.fold_type_param_bound(it)),
3057     }
3058 }
3059 #[cfg(any(feature = "derive", feature = "full"))]
fold_type_tuple<F>(f: &mut F, node: TypeTuple) -> TypeTuple where F: Fold + ?Sized,3060 pub fn fold_type_tuple<F>(f: &mut F, node: TypeTuple) -> TypeTuple
3061 where
3062     F: Fold + ?Sized,
3063 {
3064     TypeTuple {
3065         paren_token: Paren(tokens_helper(f, &node.paren_token.span)),
3066         elems: FoldHelper::lift(node.elems, |it| f.fold_type(it)),
3067     }
3068 }
3069 #[cfg(any(feature = "derive", feature = "full"))]
fold_un_op<F>(f: &mut F, node: UnOp) -> UnOp where F: Fold + ?Sized,3070 pub fn fold_un_op<F>(f: &mut F, node: UnOp) -> UnOp
3071 where
3072     F: Fold + ?Sized,
3073 {
3074     match node {
3075         UnOp::Deref(_binding_0) => UnOp::Deref(Token ! [ * ](tokens_helper(f, &_binding_0.spans))),
3076         UnOp::Not(_binding_0) => UnOp::Not(Token![!](tokens_helper(f, &_binding_0.spans))),
3077         UnOp::Neg(_binding_0) => UnOp::Neg(Token ! [ - ](tokens_helper(f, &_binding_0.spans))),
3078     }
3079 }
3080 #[cfg(feature = "full")]
fold_use_glob<F>(f: &mut F, node: UseGlob) -> UseGlob where F: Fold + ?Sized,3081 pub fn fold_use_glob<F>(f: &mut F, node: UseGlob) -> UseGlob
3082 where
3083     F: Fold + ?Sized,
3084 {
3085     UseGlob {
3086         star_token: Token ! [ * ](tokens_helper(f, &node.star_token.spans)),
3087     }
3088 }
3089 #[cfg(feature = "full")]
fold_use_group<F>(f: &mut F, node: UseGroup) -> UseGroup where F: Fold + ?Sized,3090 pub fn fold_use_group<F>(f: &mut F, node: UseGroup) -> UseGroup
3091 where
3092     F: Fold + ?Sized,
3093 {
3094     UseGroup {
3095         brace_token: Brace(tokens_helper(f, &node.brace_token.span)),
3096         items: FoldHelper::lift(node.items, |it| f.fold_use_tree(it)),
3097     }
3098 }
3099 #[cfg(feature = "full")]
fold_use_name<F>(f: &mut F, node: UseName) -> UseName where F: Fold + ?Sized,3100 pub fn fold_use_name<F>(f: &mut F, node: UseName) -> UseName
3101 where
3102     F: Fold + ?Sized,
3103 {
3104     UseName {
3105         ident: f.fold_ident(node.ident),
3106     }
3107 }
3108 #[cfg(feature = "full")]
fold_use_path<F>(f: &mut F, node: UsePath) -> UsePath where F: Fold + ?Sized,3109 pub fn fold_use_path<F>(f: &mut F, node: UsePath) -> UsePath
3110 where
3111     F: Fold + ?Sized,
3112 {
3113     UsePath {
3114         ident: f.fold_ident(node.ident),
3115         colon2_token: Token ! [ :: ](tokens_helper(f, &node.colon2_token.spans)),
3116         tree: Box::new(f.fold_use_tree(*node.tree)),
3117     }
3118 }
3119 #[cfg(feature = "full")]
fold_use_rename<F>(f: &mut F, node: UseRename) -> UseRename where F: Fold + ?Sized,3120 pub fn fold_use_rename<F>(f: &mut F, node: UseRename) -> UseRename
3121 where
3122     F: Fold + ?Sized,
3123 {
3124     UseRename {
3125         ident: f.fold_ident(node.ident),
3126         as_token: Token![as](tokens_helper(f, &node.as_token.span)),
3127         rename: f.fold_ident(node.rename),
3128     }
3129 }
3130 #[cfg(feature = "full")]
fold_use_tree<F>(f: &mut F, node: UseTree) -> UseTree where F: Fold + ?Sized,3131 pub fn fold_use_tree<F>(f: &mut F, node: UseTree) -> UseTree
3132 where
3133     F: Fold + ?Sized,
3134 {
3135     match node {
3136         UseTree::Path(_binding_0) => UseTree::Path(f.fold_use_path(_binding_0)),
3137         UseTree::Name(_binding_0) => UseTree::Name(f.fold_use_name(_binding_0)),
3138         UseTree::Rename(_binding_0) => UseTree::Rename(f.fold_use_rename(_binding_0)),
3139         UseTree::Glob(_binding_0) => UseTree::Glob(f.fold_use_glob(_binding_0)),
3140         UseTree::Group(_binding_0) => UseTree::Group(f.fold_use_group(_binding_0)),
3141     }
3142 }
3143 #[cfg(any(feature = "derive", feature = "full"))]
fold_variadic<F>(f: &mut F, node: Variadic) -> Variadic where F: Fold + ?Sized,3144 pub fn fold_variadic<F>(f: &mut F, node: Variadic) -> Variadic
3145 where
3146     F: Fold + ?Sized,
3147 {
3148     Variadic {
3149         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
3150         dots: Token ! [ ... ](tokens_helper(f, &node.dots.spans)),
3151     }
3152 }
3153 #[cfg(any(feature = "derive", feature = "full"))]
fold_variant<F>(f: &mut F, node: Variant) -> Variant where F: Fold + ?Sized,3154 pub fn fold_variant<F>(f: &mut F, node: Variant) -> Variant
3155 where
3156     F: Fold + ?Sized,
3157 {
3158     Variant {
3159         attrs: FoldHelper::lift(node.attrs, |it| f.fold_attribute(it)),
3160         ident: f.fold_ident(node.ident),
3161         fields: f.fold_fields(node.fields),
3162         discriminant: (node.discriminant).map(|it| {
3163             (
3164                 Token ! [ = ](tokens_helper(f, &(it).0.spans)),
3165                 f.fold_expr((it).1),
3166             )
3167         }),
3168     }
3169 }
3170 #[cfg(any(feature = "derive", feature = "full"))]
fold_vis_crate<F>(f: &mut F, node: VisCrate) -> VisCrate where F: Fold + ?Sized,3171 pub fn fold_vis_crate<F>(f: &mut F, node: VisCrate) -> VisCrate
3172 where
3173     F: Fold + ?Sized,
3174 {
3175     VisCrate {
3176         crate_token: Token![crate](tokens_helper(f, &node.crate_token.span)),
3177     }
3178 }
3179 #[cfg(any(feature = "derive", feature = "full"))]
fold_vis_public<F>(f: &mut F, node: VisPublic) -> VisPublic where F: Fold + ?Sized,3180 pub fn fold_vis_public<F>(f: &mut F, node: VisPublic) -> VisPublic
3181 where
3182     F: Fold + ?Sized,
3183 {
3184     VisPublic {
3185         pub_token: Token![pub](tokens_helper(f, &node.pub_token.span)),
3186     }
3187 }
3188 #[cfg(any(feature = "derive", feature = "full"))]
fold_vis_restricted<F>(f: &mut F, node: VisRestricted) -> VisRestricted where F: Fold + ?Sized,3189 pub fn fold_vis_restricted<F>(f: &mut F, node: VisRestricted) -> VisRestricted
3190 where
3191     F: Fold + ?Sized,
3192 {
3193     VisRestricted {
3194         pub_token: Token![pub](tokens_helper(f, &node.pub_token.span)),
3195         paren_token: Paren(tokens_helper(f, &node.paren_token.span)),
3196         in_token: (node.in_token).map(|it| Token![in](tokens_helper(f, &it.span))),
3197         path: Box::new(f.fold_path(*node.path)),
3198     }
3199 }
3200 #[cfg(any(feature = "derive", feature = "full"))]
fold_visibility<F>(f: &mut F, node: Visibility) -> Visibility where F: Fold + ?Sized,3201 pub fn fold_visibility<F>(f: &mut F, node: Visibility) -> Visibility
3202 where
3203     F: Fold + ?Sized,
3204 {
3205     match node {
3206         Visibility::Public(_binding_0) => Visibility::Public(f.fold_vis_public(_binding_0)),
3207         Visibility::Crate(_binding_0) => Visibility::Crate(f.fold_vis_crate(_binding_0)),
3208         Visibility::Restricted(_binding_0) => {
3209             Visibility::Restricted(f.fold_vis_restricted(_binding_0))
3210         }
3211         Visibility::Inherited => Visibility::Inherited,
3212     }
3213 }
3214 #[cfg(any(feature = "derive", feature = "full"))]
fold_where_clause<F>(f: &mut F, node: WhereClause) -> WhereClause where F: Fold + ?Sized,3215 pub fn fold_where_clause<F>(f: &mut F, node: WhereClause) -> WhereClause
3216 where
3217     F: Fold + ?Sized,
3218 {
3219     WhereClause {
3220         where_token: Token![where](tokens_helper(f, &node.where_token.span)),
3221         predicates: FoldHelper::lift(node.predicates, |it| f.fold_where_predicate(it)),
3222     }
3223 }
3224 #[cfg(any(feature = "derive", feature = "full"))]
fold_where_predicate<F>(f: &mut F, node: WherePredicate) -> WherePredicate where F: Fold + ?Sized,3225 pub fn fold_where_predicate<F>(f: &mut F, node: WherePredicate) -> WherePredicate
3226 where
3227     F: Fold + ?Sized,
3228 {
3229     match node {
3230         WherePredicate::Type(_binding_0) => WherePredicate::Type(f.fold_predicate_type(_binding_0)),
3231         WherePredicate::Lifetime(_binding_0) => {
3232             WherePredicate::Lifetime(f.fold_predicate_lifetime(_binding_0))
3233         }
3234         WherePredicate::Eq(_binding_0) => WherePredicate::Eq(f.fold_predicate_eq(_binding_0)),
3235     }
3236 }
3237