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