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