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