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