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