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