Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Impressum visit.rs   Interaktion und
Portierbarkeitunbekannt

 
Haftungsausschluß.rs KontaktUnknown {[0] [0] [0]}diese Dinge liegen außhalb unserer Verantwortung

// This file is @generated by syn-internal-codegen.
// It is not intended for manual editing.

#![allow(unused_variables)]
#![allow(clippy::needless_pass_by_ref_mut)]
#[cfg(any(feature = "full", feature = "derive"))]
use crate::punctuated::Punctuated;
#[cfg(feature = "full")]
macro_rules! full {
    ($e:expr) => {
        $e
    };
}
#[cfg(all(feature = "derive", not(feature = "full")))]
macro_rules! full {
    ($e:expr) => {
        unreachable!()
    };
}
macro_rules! skip {
    ($($tt:tt)*) => {};
}
/// Syntax tree traversal to walk a shared borrow of a syntax tree.
///
/// See the [module documentation] for details.
///
/// [module documentation]: self
pub trait Visit<'ast> {
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_abi(&mut self, i: &'ast crate::Abi) {
        visit_abi(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_angle_bracketed_generic_arguments(
        &mut self,
        i: &'ast crate::AngleBracketedGenericArguments,
    ) {
        visit_angle_bracketed_generic_arguments(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_arm(&mut self, i: &'ast crate::Arm) {
        visit_arm(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_assoc_const(&mut self, i: &'ast crate::AssocConst) {
        visit_assoc_const(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_assoc_type(&mut self, i: &'ast crate::AssocType) {
        visit_assoc_type(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_attr_style(&mut self, i: &'ast crate::AttrStyle) {
        visit_attr_style(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_attribute(&mut self, i: &'ast crate::Attribute) {
        visit_attribute(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_bare_fn_arg(&mut self, i: &'ast crate::BareFnArg) {
        visit_bare_fn_arg(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_bare_variadic(&mut self, i: &'ast crate::BareVariadic) {
        visit_bare_variadic(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_bin_op(&mut self, i: &'ast crate::BinOp) {
        visit_bin_op(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_block(&mut self, i: &'ast crate::Block) {
        visit_block(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_bound_lifetimes(&mut self, i: &'ast crate::BoundLifetimes) {
        visit_bound_lifetimes(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_captured_param(&mut self, i: &'ast crate::CapturedParam) {
        visit_captured_param(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_const_param(&mut self, i: &'ast crate::ConstParam) {
        visit_const_param(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_constraint(&mut self, i: &'ast crate::Constraint) {
        visit_constraint(self, i);
    }
    #[cfg(feature = "derive")]
    #[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
    fn visit_data(&mut self, i: &'ast crate::Data) {
        visit_data(self, i);
    }
    #[cfg(feature = "derive")]
    #[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
    fn visit_data_enum(&mut self, i: &'ast crate::DataEnum) {
        visit_data_enum(self, i);
    }
    #[cfg(feature = "derive")]
    #[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
    fn visit_data_struct(&mut self, i: &'ast crate::DataStruct) {
        visit_data_struct(self, i);
    }
    #[cfg(feature = "derive")]
    #[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
    fn visit_data_union(&mut self, i: &'ast crate::DataUnion) {
        visit_data_union(self, i);
    }
    #[cfg(feature = "derive")]
    #[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
    fn visit_derive_input(&mut self, i: &'ast crate::DeriveInput) {
        visit_derive_input(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_expr(&mut self, i: &'ast crate::Expr) {
        visit_expr(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_expr_array(&mut self, i: &'ast crate::ExprArray) {
        visit_expr_array(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_expr_assign(&mut self, i: &'ast crate::ExprAssign) {
        visit_expr_assign(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_expr_async(&mut self, i: &'ast crate::ExprAsync) {
        visit_expr_async(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_expr_await(&mut self, i: &'ast crate::ExprAwait) {
        visit_expr_await(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_expr_binary(&mut self, i: &'ast crate::ExprBinary) {
        visit_expr_binary(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_expr_block(&mut self, i: &'ast crate::ExprBlock) {
        visit_expr_block(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_expr_break(&mut self, i: &'ast crate::ExprBreak) {
        visit_expr_break(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_expr_call(&mut self, i: &'ast crate::ExprCall) {
        visit_expr_call(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_expr_cast(&mut self, i: &'ast crate::ExprCast) {
        visit_expr_cast(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_expr_closure(&mut self, i: &'ast crate::ExprClosure) {
        visit_expr_closure(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_expr_const(&mut self, i: &'ast crate::ExprConst) {
        visit_expr_const(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_expr_continue(&mut self, i: &'ast crate::ExprContinue) {
        visit_expr_continue(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_expr_field(&mut self, i: &'ast crate::ExprField) {
        visit_expr_field(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_expr_for_loop(&mut self, i: &'ast crate::ExprForLoop) {
        visit_expr_for_loop(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_expr_group(&mut self, i: &'ast crate::ExprGroup) {
        visit_expr_group(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_expr_if(&mut self, i: &'ast crate::ExprIf) {
        visit_expr_if(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_expr_index(&mut self, i: &'ast crate::ExprIndex) {
        visit_expr_index(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_expr_infer(&mut self, i: &'ast crate::ExprInfer) {
        visit_expr_infer(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_expr_let(&mut self, i: &'ast crate::ExprLet) {
        visit_expr_let(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_expr_lit(&mut self, i: &'ast crate::ExprLit) {
        visit_expr_lit(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_expr_loop(&mut self, i: &'ast crate::ExprLoop) {
        visit_expr_loop(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_expr_macro(&mut self, i: &'ast crate::ExprMacro) {
        visit_expr_macro(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_expr_match(&mut self, i: &'ast crate::ExprMatch) {
        visit_expr_match(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_expr_method_call(&mut self, i: &'ast crate::ExprMethodCall) {
        visit_expr_method_call(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_expr_paren(&mut self, i: &'ast crate::ExprParen) {
        visit_expr_paren(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_expr_path(&mut self, i: &'ast crate::ExprPath) {
        visit_expr_path(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_expr_range(&mut self, i: &'ast crate::ExprRange) {
        visit_expr_range(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_expr_raw_addr(&mut self, i: &'ast crate::ExprRawAddr) {
        visit_expr_raw_addr(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_expr_reference(&mut self, i: &'ast crate::ExprReference) {
        visit_expr_reference(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_expr_repeat(&mut self, i: &'ast crate::ExprRepeat) {
        visit_expr_repeat(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_expr_return(&mut self, i: &'ast crate::ExprReturn) {
        visit_expr_return(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_expr_struct(&mut self, i: &'ast crate::ExprStruct) {
        visit_expr_struct(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_expr_try(&mut self, i: &'ast crate::ExprTry) {
        visit_expr_try(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_expr_try_block(&mut self, i: &'ast crate::ExprTryBlock) {
        visit_expr_try_block(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_expr_tuple(&mut self, i: &'ast crate::ExprTuple) {
        visit_expr_tuple(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_expr_unary(&mut self, i: &'ast crate::ExprUnary) {
        visit_expr_unary(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_expr_unsafe(&mut self, i: &'ast crate::ExprUnsafe) {
        visit_expr_unsafe(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_expr_while(&mut self, i: &'ast crate::ExprWhile) {
        visit_expr_while(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_expr_yield(&mut self, i: &'ast crate::ExprYield) {
        visit_expr_yield(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_field(&mut self, i: &'ast crate::Field) {
        visit_field(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_field_mutability(&mut self, i: &'ast crate::FieldMutability) {
        visit_field_mutability(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_field_pat(&mut self, i: &'ast crate::FieldPat) {
        visit_field_pat(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_field_value(&mut self, i: &'ast crate::FieldValue) {
        visit_field_value(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_fields(&mut self, i: &'ast crate::Fields) {
        visit_fields(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_fields_named(&mut self, i: &'ast crate::FieldsNamed) {
        visit_fields_named(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_fields_unnamed(&mut self, i: &'ast crate::FieldsUnnamed) {
        visit_fields_unnamed(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_file(&mut self, i: &'ast crate::File) {
        visit_file(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_fn_arg(&mut self, i: &'ast crate::FnArg) {
        visit_fn_arg(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_foreign_item(&mut self, i: &'ast crate::ForeignItem) {
        visit_foreign_item(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_foreign_item_fn(&mut self, i: &'ast crate::ForeignItemFn) {
        visit_foreign_item_fn(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_foreign_item_macro(&mut self, i: &'ast crate::ForeignItemMacro) {
        visit_foreign_item_macro(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_foreign_item_static(&mut self, i: &'ast crate::ForeignItemStatic) {
        visit_foreign_item_static(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_foreign_item_type(&mut self, i: &'ast crate::ForeignItemType) {
        visit_foreign_item_type(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_generic_argument(&mut self, i: &'ast crate::GenericArgument) {
        visit_generic_argument(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_generic_param(&mut self, i: &'ast crate::GenericParam) {
        visit_generic_param(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_generics(&mut self, i: &'ast crate::Generics) {
        visit_generics(self, i);
    }
    fn visit_ident(&mut self, i: &'ast proc_macro2::Ident) {
        visit_ident(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_impl_item(&mut self, i: &'ast crate::ImplItem) {
        visit_impl_item(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_impl_item_const(&mut self, i: &'ast crate::ImplItemConst) {
        visit_impl_item_const(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_impl_item_fn(&mut self, i: &'ast crate::ImplItemFn) {
        visit_impl_item_fn(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_impl_item_macro(&mut self, i: &'ast crate::ImplItemMacro) {
        visit_impl_item_macro(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_impl_item_type(&mut self, i: &'ast crate::ImplItemType) {
        visit_impl_item_type(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_impl_restriction(&mut self, i: &'ast crate::ImplRestriction) {
        visit_impl_restriction(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_index(&mut self, i: &'ast crate::Index) {
        visit_index(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_item(&mut self, i: &'ast crate::Item) {
        visit_item(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_item_const(&mut self, i: &'ast crate::ItemConst) {
        visit_item_const(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_item_enum(&mut self, i: &'ast crate::ItemEnum) {
        visit_item_enum(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_item_extern_crate(&mut self, i: &'ast crate::ItemExternCrate) {
        visit_item_extern_crate(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_item_fn(&mut self, i: &'ast crate::ItemFn) {
        visit_item_fn(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_item_foreign_mod(&mut self, i: &'ast crate::ItemForeignMod) {
        visit_item_foreign_mod(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_item_impl(&mut self, i: &'ast crate::ItemImpl) {
        visit_item_impl(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_item_macro(&mut self, i: &'ast crate::ItemMacro) {
        visit_item_macro(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_item_mod(&mut self, i: &'ast crate::ItemMod) {
        visit_item_mod(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_item_static(&mut self, i: &'ast crate::ItemStatic) {
        visit_item_static(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_item_struct(&mut self, i: &'ast crate::ItemStruct) {
        visit_item_struct(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_item_trait(&mut self, i: &'ast crate::ItemTrait) {
        visit_item_trait(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_item_trait_alias(&mut self, i: &'ast crate::ItemTraitAlias) {
        visit_item_trait_alias(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_item_type(&mut self, i: &'ast crate::ItemType) {
        visit_item_type(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_item_union(&mut self, i: &'ast crate::ItemUnion) {
        visit_item_union(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_item_use(&mut self, i: &'ast crate::ItemUse) {
        visit_item_use(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_label(&mut self, i: &'ast crate::Label) {
        visit_label(self, i);
    }
    fn visit_lifetime(&mut self, i: &'ast crate::Lifetime) {
        visit_lifetime(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_lifetime_param(&mut self, i: &'ast crate::LifetimeParam) {
        visit_lifetime_param(self, i);
    }
    fn visit_lit(&mut self, i: &'ast crate::Lit) {
        visit_lit(self, i);
    }
    fn visit_lit_bool(&mut self, i: &'ast crate::LitBool) {
        visit_lit_bool(self, i);
    }
    fn visit_lit_byte(&mut self, i: &'ast crate::LitByte) {
        visit_lit_byte(self, i);
    }
    fn visit_lit_byte_str(&mut self, i: &'ast crate::LitByteStr) {
        visit_lit_byte_str(self, i);
    }
    fn visit_lit_cstr(&mut self, i: &'ast crate::LitCStr) {
        visit_lit_cstr(self, i);
    }
    fn visit_lit_char(&mut self, i: &'ast crate::LitChar) {
        visit_lit_char(self, i);
    }
    fn visit_lit_float(&mut self, i: &'ast crate::LitFloat) {
        visit_lit_float(self, i);
    }
    fn visit_lit_int(&mut self, i: &'ast crate::LitInt) {
        visit_lit_int(self, i);
    }
    fn visit_lit_str(&mut self, i: &'ast crate::LitStr) {
        visit_lit_str(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_local(&mut self, i: &'ast crate::Local) {
        visit_local(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_local_init(&mut self, i: &'ast crate::LocalInit) {
        visit_local_init(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_macro(&mut self, i: &'ast crate::Macro) {
        visit_macro(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_macro_delimiter(&mut self, i: &'ast crate::MacroDelimiter) {
        visit_macro_delimiter(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_member(&mut self, i: &'ast crate::Member) {
        visit_member(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_meta(&mut self, i: &'ast crate::Meta) {
        visit_meta(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_meta_list(&mut self, i: &'ast crate::MetaList) {
        visit_meta_list(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_meta_name_value(&mut self, i: &'ast crate::MetaNameValue) {
        visit_meta_name_value(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_parenthesized_generic_arguments(
        &mut self,
        i: &'ast crate::ParenthesizedGenericArguments,
    ) {
        visit_parenthesized_generic_arguments(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_pat(&mut self, i: &'ast crate::Pat) {
        visit_pat(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_pat_ident(&mut self, i: &'ast crate::PatIdent) {
        visit_pat_ident(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_pat_or(&mut self, i: &'ast crate::PatOr) {
        visit_pat_or(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_pat_paren(&mut self, i: &'ast crate::PatParen) {
        visit_pat_paren(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_pat_reference(&mut self, i: &'ast crate::PatReference) {
        visit_pat_reference(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_pat_rest(&mut self, i: &'ast crate::PatRest) {
        visit_pat_rest(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_pat_slice(&mut self, i: &'ast crate::PatSlice) {
        visit_pat_slice(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_pat_struct(&mut self, i: &'ast crate::PatStruct) {
        visit_pat_struct(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_pat_tuple(&mut self, i: &'ast crate::PatTuple) {
        visit_pat_tuple(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_pat_tuple_struct(&mut self, i: &'ast crate::PatTupleStruct) {
        visit_pat_tuple_struct(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_pat_type(&mut self, i: &'ast crate::PatType) {
        visit_pat_type(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_pat_wild(&mut self, i: &'ast crate::PatWild) {
        visit_pat_wild(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_path(&mut self, i: &'ast crate::Path) {
        visit_path(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_path_arguments(&mut self, i: &'ast crate::PathArguments) {
        visit_path_arguments(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_path_segment(&mut self, i: &'ast crate::PathSegment) {
        visit_path_segment(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_pointer_mutability(&mut self, i: &'ast crate::PointerMutability) {
        visit_pointer_mutability(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_precise_capture(&mut self, i: &'ast crate::PreciseCapture) {
        visit_precise_capture(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_predicate_lifetime(&mut self, i: &'ast crate::PredicateLifetime) {
        visit_predicate_lifetime(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_predicate_type(&mut self, i: &'ast crate::PredicateType) {
        visit_predicate_type(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_qself(&mut self, i: &'ast crate::QSelf) {
        visit_qself(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_range_limits(&mut self, i: &'ast crate::RangeLimits) {
        visit_range_limits(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_receiver(&mut self, i: &'ast crate::Receiver) {
        visit_receiver(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_return_type(&mut self, i: &'ast crate::ReturnType) {
        visit_return_type(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_signature(&mut self, i: &'ast crate::Signature) {
        visit_signature(self, i);
    }
    fn visit_span(&mut self, i: &proc_macro2::Span) {
        visit_span(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_static_mutability(&mut self, i: &'ast crate::StaticMutability) {
        visit_static_mutability(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_stmt(&mut self, i: &'ast crate::Stmt) {
        visit_stmt(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_stmt_macro(&mut self, i: &'ast crate::StmtMacro) {
        visit_stmt_macro(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_trait_bound(&mut self, i: &'ast crate::TraitBound) {
        visit_trait_bound(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_trait_bound_modifier(&mut self, i: &'ast crate::TraitBoundModifier) {
        visit_trait_bound_modifier(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_trait_item(&mut self, i: &'ast crate::TraitItem) {
        visit_trait_item(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_trait_item_const(&mut self, i: &'ast crate::TraitItemConst) {
        visit_trait_item_const(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_trait_item_fn(&mut self, i: &'ast crate::TraitItemFn) {
        visit_trait_item_fn(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_trait_item_macro(&mut self, i: &'ast crate::TraitItemMacro) {
        visit_trait_item_macro(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_trait_item_type(&mut self, i: &'ast crate::TraitItemType) {
        visit_trait_item_type(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_type(&mut self, i: &'ast crate::Type) {
        visit_type(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_type_array(&mut self, i: &'ast crate::TypeArray) {
        visit_type_array(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_type_bare_fn(&mut self, i: &'ast crate::TypeBareFn) {
        visit_type_bare_fn(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_type_group(&mut self, i: &'ast crate::TypeGroup) {
        visit_type_group(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_type_impl_trait(&mut self, i: &'ast crate::TypeImplTrait) {
        visit_type_impl_trait(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_type_infer(&mut self, i: &'ast crate::TypeInfer) {
        visit_type_infer(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_type_macro(&mut self, i: &'ast crate::TypeMacro) {
        visit_type_macro(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_type_never(&mut self, i: &'ast crate::TypeNever) {
        visit_type_never(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_type_param(&mut self, i: &'ast crate::TypeParam) {
        visit_type_param(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_type_param_bound(&mut self, i: &'ast crate::TypeParamBound) {
        visit_type_param_bound(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_type_paren(&mut self, i: &'ast crate::TypeParen) {
        visit_type_paren(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_type_path(&mut self, i: &'ast crate::TypePath) {
        visit_type_path(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_type_ptr(&mut self, i: &'ast crate::TypePtr) {
        visit_type_ptr(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_type_reference(&mut self, i: &'ast crate::TypeReference) {
        visit_type_reference(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_type_slice(&mut self, i: &'ast crate::TypeSlice) {
        visit_type_slice(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_type_trait_object(&mut self, i: &'ast crate::TypeTraitObject) {
        visit_type_trait_object(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_type_tuple(&mut self, i: &'ast crate::TypeTuple) {
        visit_type_tuple(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_un_op(&mut self, i: &'ast crate::UnOp) {
        visit_un_op(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_use_glob(&mut self, i: &'ast crate::UseGlob) {
        visit_use_glob(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_use_group(&mut self, i: &'ast crate::UseGroup) {
        visit_use_group(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_use_name(&mut self, i: &'ast crate::UseName) {
        visit_use_name(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_use_path(&mut self, i: &'ast crate::UsePath) {
        visit_use_path(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_use_rename(&mut self, i: &'ast crate::UseRename) {
        visit_use_rename(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_use_tree(&mut self, i: &'ast crate::UseTree) {
        visit_use_tree(self, i);
    }
    #[cfg(feature = "full")]
    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    fn visit_variadic(&mut self, i: &'ast crate::Variadic) {
        visit_variadic(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_variant(&mut self, i: &'ast crate::Variant) {
        visit_variant(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_vis_restricted(&mut self, i: &'ast crate::VisRestricted) {
        visit_vis_restricted(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_visibility(&mut self, i: &'ast crate::Visibility) {
        visit_visibility(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_where_clause(&mut self, i: &'ast crate::WhereClause) {
        visit_where_clause(self, i);
    }
    #[cfg(any(feature = "derive", feature = "full"))]
    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    fn visit_where_predicate(&mut self, i: &'ast crate::WherePredicate) {
        visit_where_predicate(self, i);
    }
}
#[cfg(any(feature = "derive", feature = "full"))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
pub fn visit_abi<'ast, V>(v: &mut V, node: &'ast crate::Abi)
where
    V: Visit<'ast> + ?Sized,
{
    skip!(node.extern_token);
    if let Some(it) = &node.name {
        v.visit_lit_str(it);
    }
}
#[cfg(any(feature = "derive", feature = "full"))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
pub fn visit_angle_bracketed_generic_arguments<'ast, V>(
    v: &mut V,
    node: &'ast crate::AngleBracketedGenericArguments,
)
where
    V: Visit<'ast> + ?Sized,
{
    skip!(node.colon2_token);
    skip!(node.lt_token);
    for el in Punctuated::pairs(&node.args) {
        let it = el.value();
        v.visit_generic_argument(it);
    }
    skip!(node.gt_token);
}
#[cfg(feature = "full")]
#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
pub fn visit_arm<'ast, V>(v: &mut V, node: &'ast crate::Arm)
where
    V: Visit<'ast> + ?Sized,
{
    for it in &node.attrs {
        v.visit_attribute(it);
    }
    v.visit_pat(&node.pat);
    if let Some(it) = &node.guard {
        skip!((it).0);
        v.visit_expr(&*(it).1);
    }
    skip!(node.fat_arrow_token);
    v.visit_expr(&*node.body);
    skip!(node.comma);
}
#[cfg(any(feature = "derive", feature = "full"))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
pub fn visit_assoc_const<'ast, V>(v: &mut V, node: &'ast crate::AssocConst)
where
    V: Visit<'ast> + ?Sized,
{
    v.visit_ident(&node.ident);
    if let Some(it) = &node.generics {
        v.visit_angle_bracketed_generic_arguments(it);
    }
    skip!(node.eq_token);
    v.visit_expr(&node.value);
}
#[cfg(any(feature = "derive", feature = "full"))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
pub fn visit_assoc_type<'ast, V>(v: &mut V, node: &'ast crate::AssocType)
where
    V: Visit<'ast> + ?Sized,
{
    v.visit_ident(&node.ident);
    if let Some(it) = &node.generics {
        v.visit_angle_bracketed_generic_arguments(it);
    }
    skip!(node.eq_token);
    v.visit_type(&node.ty);
}
#[cfg(any(feature = "derive", feature = "full"))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
pub fn visit_attr_style<'ast, V>(v: &mut V, node: &'ast crate::AttrStyle)
where
    V: Visit<'ast> + ?Sized,
{
    match node {
        crate::AttrStyle::Outer => {}
        crate::AttrStyle::Inner(_binding_0) => {
            skip!(_binding_0);
        }
    }
}
#[cfg(any(feature = "derive", feature = "full"))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
pub fn visit_attribute<'ast, V>(v: &mut V, node: &'ast crate::Attribute)
where
    V: Visit<'ast> + ?Sized,
{
    skip!(node.pound_token);
    v.visit_attr_style(&node.style);
    skip!(node.bracket_token);
    v.visit_meta(&node.meta);
}
#[cfg(any(feature = "derive", feature = "full"))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
pub fn visit_bare_fn_arg<'ast, V>(v: &mut V, node: &'ast crate::BareFnArg)
where
    V: Visit<'ast> + ?Sized,
{
    for it in &node.attrs {
        v.visit_attribute(it);
    }
    if let Some(it) = &node.name {
        v.visit_ident(&(it).0);
        skip!((it).1);
    }
    v.visit_type(&node.ty);
}
#[cfg(any(feature = "derive", feature = "full"))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
pub fn visit_bare_variadic<'ast, V>(v: &mut V, node: &'ast crate::BareVariadic)
where
    V: Visit<'ast> + ?Sized,
{
    for it in &node.attrs {
        v.visit_attribute(it);
    }
    if let Some(it) = &node.name {
        v.visit_ident(&(it).0);
        skip!((it).1);
    }
    skip!(node.dots);
    skip!(node.comma);
}
#[cfg(any(feature = "derive", feature = "full"))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
pub fn visit_bin_op<'ast, V>(v: &mut V, node: &'ast crate::BinOp)
where
    V: Visit<'ast> + ?Sized,
{
    match node {
        crate::BinOp::Add(_binding_0) => {
            skip!(_binding_0);
        }
        crate::BinOp::Sub(_binding_0) => {
            skip!(_binding_0);
        }
        crate::BinOp::Mul(_binding_0) => {
            skip!(_binding_0);
        }
        crate::BinOp::Div(_binding_0) => {
            skip!(_binding_0);
        }
        crate::BinOp::Rem(_binding_0) => {
            skip!(_binding_0);
        }
        crate::BinOp::And(_binding_0) => {
            skip!(_binding_0);
        }
        crate::BinOp::Or(_binding_0) => {
            skip!(_binding_0);
        }
        crate::BinOp::BitXor(_binding_0) => {
            skip!(_binding_0);
        }
        crate::BinOp::BitAnd(_binding_0) => {
            skip!(_binding_0);
        }
        crate::BinOp::BitOr(_binding_0) => {
            skip!(_binding_0);
        }
        crate::BinOp::Shl(_binding_0) => {
            skip!(_binding_0);
        }
        crate::BinOp::Shr(_binding_0) => {
            skip!(_binding_0);
        }
        crate::BinOp::Eq(_binding_0) => {
            skip!(_binding_0);
        }
        crate::BinOp::Lt(_binding_0) => {
            skip!(_binding_0);
        }
        crate::BinOp::Le(_binding_0) => {
            skip!(_binding_0);
        }
        crate::BinOp::Ne(_binding_0) => {
            skip!(_binding_0);
        }
        crate::BinOp::Ge(_binding_0) => {
            skip!(_binding_0);
        }
        crate::BinOp::Gt(_binding_0) => {
            skip!(_binding_0);
        }
        crate::BinOp::AddAssign(_binding_0) => {
            skip!(_binding_0);
        }
        crate::BinOp::SubAssign(_binding_0) => {
            skip!(_binding_0);
        }
        crate::BinOp::MulAssign(_binding_0) => {
            skip!(_binding_0);
        }
        crate::BinOp::DivAssign(_binding_0) => {
            skip!(_binding_0);
        }
        crate::BinOp::RemAssign(_binding_0) => {
            skip!(_binding_0);
        }
        crate::BinOp::BitXorAssign(_binding_0) => {
            skip!(_binding_0);
        }
        crate::BinOp::BitAndAssign(_binding_0) => {
            skip!(_binding_0);
        }
        crate::BinOp::BitOrAssign(_binding_0) => {
            skip!(_binding_0);
        }
        crate::BinOp::ShlAssign(_binding_0) => {
            skip!(_binding_0);
        }
        crate::BinOp::ShrAssign(_binding_0) => {
            skip!(_binding_0);
        }
    }
}
#[cfg(feature = "full")]
#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
pub fn visit_block<'ast, V>(v: &mut V, node: &'ast crate::Block)
where
    V: Visit<'ast> + ?Sized,
{
    skip!(node.brace_token);
    for it in &node.stmts {
        v.visit_stmt(it);
    }
}
#[cfg(any(feature = "derive", feature = "full"))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
pub fn visit_bound_lifetimes<'ast, V>(v: &mut V, node: &'ast crate::BoundLifetimes)
where
    V: Visit<'ast> + ?Sized,
{
    skip!(node.for_token);
    skip!(node.lt_token);
    for el in Punctuated::pairs(&node.lifetimes) {
        let it = el.value();
        v.visit_generic_param(it);
    }
    skip!(node.gt_token);
}
#[cfg(feature = "full")]
#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
pub fn visit_captured_param<'ast, V>(v: &mut V, node: &'ast crate::CapturedParam)
where
    V: Visit<'ast> + ?Sized,
{
    match node {
        crate::CapturedParam::Lifetime(_binding_0) => {
            v.visit_lifetime(_binding_0);
        }
        crate::CapturedParam::Ident(_binding_0) => {
            v.visit_ident(_binding_0);
        }
    }
}
#[cfg(any(feature = "derive", feature = "full"))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
pub fn visit_const_param<'ast, V>(v: &mut V, node: &'ast crate::ConstParam)
where
    V: Visit<'ast> + ?Sized,
{
    for it in &node.attrs {
        v.visit_attribute(it);
    }
    skip!(node.const_token);
    v.visit_ident(&node.ident);
    skip!(node.colon_token);
    v.visit_type(&node.ty);
    skip!(node.eq_token);
    if let Some(it) = &node.default {
        v.visit_expr(it);
    }
}
#[cfg(any(feature = "derive", feature = "full"))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
pub fn visit_constraint<'ast, V>(v: &mut V, node: &'ast crate::Constraint)
where
    V: Visit<'ast> + ?Sized,
{
    v.visit_ident(&node.ident);
    if let Some(it) = &node.generics {
        v.visit_angle_bracketed_generic_arguments(it);
    }
    skip!(node.colon_token);
    for el in Punctuated::pairs(&node.bounds) {
        let it = el.value();
        v.visit_type_param_bound(it);
    }
}
#[cfg(feature = "derive")]
#[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
pub fn visit_data<'ast, V>(v: &mut V, node: &'ast crate::Data)
where
    V: Visit<'ast> + ?Sized,
{
    match node {
        crate::Data::Struct(_binding_0) => {
            v.visit_data_struct(_binding_0);
        }
        crate::Data::Enum(_binding_0) => {
            v.visit_data_enum(_binding_0);
        }
        crate::Data::Union(_binding_0) => {
            v.visit_data_union(_binding_0);
        }
    }
}
#[cfg(feature = "derive")]
#[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
pub fn visit_data_enum<'ast, V>(v: &mut V, node: &'ast crate::DataEnum)
where
    V: Visit<'ast> + ?Sized,
{
    skip!(node.enum_token);
    skip!(node.brace_token);
    for el in Punctuated::pairs(&node.variants) {
        let it = el.value();
        v.visit_variant(it);
    }
}
#[cfg(feature = "derive")]
#[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
pub fn visit_data_struct<'ast, V>(v: &mut V, node: &'ast crate::DataStruct)
where
    V: Visit<'ast> + ?Sized,
{
    skip!(node.struct_token);
    v.visit_fields(&node.fields);
    skip!(node.semi_token);
}
#[cfg(feature = "derive")]
#[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
pub fn visit_data_union<'ast, V>(v: &mut V, node: &'ast crate::DataUnion)
where
    V: Visit<'ast> + ?Sized,
{
    skip!(node.union_token);
    v.visit_fields_named(&node.fields);
}
#[cfg(feature = "derive")]
#[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
pub fn visit_derive_input<'ast, V>(v: &mut V, node: &'ast crate::DeriveInput)
where
    V: Visit<'ast> + ?Sized,
{
    for it in &node.attrs {
        v.visit_attribute(it);
    }
    v.visit_visibility(&node.vis);
    v.visit_ident(&node.ident);
    v.visit_generics(&node.generics);
    v.visit_data(&node.data);
}
#[cfg(any(feature = "derive", feature = "full"))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
pub fn visit_expr<'ast, V>(v: &mut V, node: &'ast crate::Expr)
where
    V: Visit<'ast> + ?Sized,
{
    match node {
        crate::Expr::Array(_binding_0) => {
            full!(v.visit_expr_array(_binding_0));
        }
        crate::Expr::Assign(_binding_0) => {
            full!(v.visit_expr_assign(_binding_0));
        }
        crate::Expr::Async(_binding_0) => {
            full!(v.visit_expr_async(_binding_0));
        }
        crate::Expr::Await(_binding_0) => {
            full!(v.visit_expr_await(_binding_0));
        }
        crate::Expr::Binary(_binding_0) => {
            v.visit_expr_binary(_binding_0);
        }
        crate::Expr::Block(_binding_0) => {
            full!(v.visit_expr_block(_binding_0));
        }
        crate::Expr::Break(_binding_0) => {
            full!(v.visit_expr_break(_binding_0));
        }
        crate::Expr::Call(_binding_0) => {
            v.visit_expr_call(_binding_0);
        }
        crate::Expr::Cast(_binding_0) => {
            v.visit_expr_cast(_binding_0);
        }
        crate::Expr::Closure(_binding_0) => {
            full!(v.visit_expr_closure(_binding_0));
        }
        crate::Expr::Const(_binding_0) => {
            full!(v.visit_expr_const(_binding_0));
        }
        crate::Expr::Continue(_binding_0) => {
            full!(v.visit_expr_continue(_binding_0));
        }
        crate::Expr::Field(_binding_0) => {
            v.visit_expr_field(_binding_0);
        }
        crate::Expr::ForLoop(_binding_0) => {
            full!(v.visit_expr_for_loop(_binding_0));
        }
        crate::Expr::Group(_binding_0) => {
            v.visit_expr_group(_binding_0);
        }
        crate::Expr::If(_binding_0) => {
            full!(v.visit_expr_if(_binding_0));
        }
        crate::Expr::Index(_binding_0) => {
            v.visit_expr_index(_binding_0);
        }
        crate::Expr::Infer(_binding_0) => {
            full!(v.visit_expr_infer(_binding_0));
        }
        crate::Expr::Let(_binding_0) => {
            full!(v.visit_expr_let(_binding_0));
        }
        crate::Expr::Lit(_binding_0) => {
            v.visit_expr_lit(_binding_0);
        }
        crate::Expr::Loop(_binding_0) => {
            full!(v.visit_expr_loop(_binding_0));
        }
        crate::Expr::Macro(_binding_0) => {
            v.visit_expr_macro(_binding_0);
        }
        crate::Expr::Match(_binding_0) => {
            full!(v.visit_expr_match(_binding_0));
        }
        crate::Expr::MethodCall(_binding_0) => {
            v.visit_expr_method_call(_binding_0);
        }
        crate::Expr::Paren(_binding_0) => {
            v.visit_expr_paren(_binding_0);
        }
        crate::Expr::Path(_binding_0) => {
            v.visit_expr_path(_binding_0);
        }
        crate::Expr::Range(_binding_0) => {
            full!(v.visit_expr_range(_binding_0));
        }
        crate::Expr::RawAddr(_binding_0) => {
            full!(v.visit_expr_raw_addr(_binding_0));
        }
        crate::Expr::Reference(_binding_0) => {
            v.visit_expr_reference(_binding_0);
        }
        crate::Expr::Repeat(_binding_0) => {
            full!(v.visit_expr_repeat(_binding_0));
        }
        crate::Expr::Return(_binding_0) => {
            full!(v.visit_expr_return(_binding_0));
        }
        crate::Expr::Struct(_binding_0) => {
            v.visit_expr_struct(_binding_0);
        }
        crate::Expr::Try(_binding_0) => {
            full!(v.visit_expr_try(_binding_0));
        }
        crate::Expr::TryBlock(_binding_0) => {
            full!(v.visit_expr_try_block(_binding_0));
        }
        crate::Expr::Tuple(_binding_0) => {
            v.visit_expr_tuple(_binding_0);
        }
        crate::Expr::Unary(_binding_0) => {
            v.visit_expr_unary(_binding_0);
        }
        crate::Expr::Unsafe(_binding_0) => {
            full!(v.visit_expr_unsafe(_binding_0));
        }
        crate::Expr::Verbatim(_binding_0) => {
            skip!(_binding_0);
        }
        crate::Expr::While(_binding_0) => {
            full!(v.visit_expr_while(_binding_0));
        }
        crate::Expr::Yield(_binding_0) => {
            full!(v.visit_expr_yield(_binding_0));
        }
    }
}
#[cfg(feature = "full")]
#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
pub fn visit_expr_array<'ast, V>(v: &mut V, node: &'ast crate::ExprArray)
where
    V: Visit<'ast> + ?Sized,
{
    for it in &node.attrs {
        v.visit_attribute(it);
    }
    skip!(node.bracket_token);
    for el in Punctuated::pairs(&node.elems) {
        let it = el.value();
        v.visit_expr(it);
    }
}
#[cfg(feature = "full")]
#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
pub fn visit_expr_assign<'ast, V>(v: &mut V, node: &'ast crate::ExprAssign)
where
    V: Visit<'ast> + ?Sized,
{
    for it in &node.attrs {
        v.visit_attribute(it);
    }
    v.visit_expr(&*node.left);
    skip!(node.eq_token);
    v.visit_expr(&*node.right);
}
#[cfg(feature = "full")]
#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
pub fn visit_expr_async<'ast, V>(v: &mut V, node: &'ast crate::ExprAsync)
where
    V: Visit<'ast> + ?Sized,
{
    for it in &node.attrs {
        v.visit_attribute(it);
    }
    skip!(node.async_token);
    skip!(node.capture);
    v.visit_block(&node.block);
}
#[cfg(feature = "full")]
#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
pub fn visit_expr_await<'ast, V>(v: &mut V, node: &'ast crate::ExprAwait)
where
    V: Visit<'ast> + ?Sized,
{
    for it in &node.attrs {
        v.visit_attribute(it);
    }
    v.visit_expr(&*node.base);
    skip!(node.dot_token);
    skip!(node.await_token);
}
#[cfg(any(feature = "derive", feature = "full"))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
pub fn visit_expr_binary<'ast, V>(v: &mut V, node: &'ast crate::ExprBinary)
where
    V: Visit<'ast> + ?Sized,
{
    for it in &node.attrs {
        v.visit_attribute(it);
    }
    v.visit_expr(&*node.left);
    v.visit_bin_op(&node.op);
    v.visit_expr(&*node.right);
}
#[cfg(feature = "full")]
#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
pub fn visit_expr_block<'ast, V>(v: &mut V, node: &'ast crate::ExprBlock)
where
    V: Visit<'ast> + ?Sized,
{
    for it in &node.attrs {
        v.visit_attribute(it);
    }
    if let Some(it) = &node.label {
        v.visit_label(it);
    }
    v.visit_block(&node.block);
}
#[cfg(feature = "full")]
#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
pub fn visit_expr_break<'ast, V>(v: &mut V, node: &'ast crate::ExprBreak)
where
    V: Visit<'ast> + ?Sized,
{
    for it in &node.attrs {
        v.visit_attribute(it);
    }
    skip!(node.break_token);
    if let Some(it) = &node.label {
        v.visit_lifetime(it);
    }
    if let Some(it) = &node.expr {
        v.visit_expr(&**it);
    }
}
#[cfg(any(feature = "derive", feature = "full"))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
pub fn visit_expr_call<'ast, V>(v: &mut V, node: &'ast crate::ExprCall)
where
    V: Visit<'ast> + ?Sized,
{
    for it in &node.attrs {
        v.visit_attribute(it);
    }
    v.visit_expr(&*node.func);
    skip!(node.paren_token);
    for el in Punctuated::pairs(&node.args) {
        let it = el.value();
        v.visit_expr(it);
    }
}
#[cfg(any(feature = "derive", feature = "full"))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
pub fn visit_expr_cast<'ast, V>(v: &mut V, node: &'ast crate::ExprCast)
where
    V: Visit<'ast> + ?Sized,
{
    for it in &node.attrs {
        v.visit_attribute(it);
    }
    v.visit_expr(&*node.expr);
    skip!(node.as_token);
    v.visit_type(&*node.ty);
}
#[cfg(feature = "full")]
#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
pub fn visit_expr_closure<'ast, V>(v: &mut V, node: &'ast crate::ExprClosure)
where
    V: Visit<'ast> + ?Sized,
{
    for it in &node.attrs {
        v.visit_attribute(it);
    }
    if let Some(it) = &node.lifetimes {
        v.visit_bound_lifetimes(it);
    }
    skip!(node.constness);
    skip!(node.movability);
    skip!(node.asyncness);
    skip!(node.capture);
    skip!(node.or1_token);
    for el in Punctuated::pairs(&node.inputs) {
        let it = el.value();
        v.visit_pat(it);
    }
    skip!(node.or2_token);
    v.visit_return_type(&node.output);
    v.visit_expr(&*node.body);
}
#[cfg(feature = "full")]
#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
pub fn visit_expr_const<'ast, V>(v: &mut V, node: &'ast crate::ExprConst)
where
    V: Visit<'ast> + ?Sized,
{
    for it in &node.attrs {
        v.visit_attribute(it);
    }
    skip!(node.const_token);
    v.visit_block(&node.block);
}
#[cfg(feature = "full")]
#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
pub fn visit_expr_continue<'ast, V>(v: &mut V, node: &'ast crate::ExprContinue)
where
    V: Visit<'ast> + ?Sized,
{
    for it in &node.attrs {
        v.visit_attribute(it);
    }
    skip!(node.continue_token);
    if let Some(it) = &node.label {
        v.visit_lifetime(it);
    }
}
#[cfg(any(feature = "derive", feature = "full"))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
pub fn visit_expr_field<'ast, V>(v: &mut V, node: &'ast crate::ExprField)
where
    V: Visit<'ast> + ?Sized,
{
    for it in &node.attrs {
        v.visit_attribute(it);
    }
    v.visit_expr(&*node.base);
    skip!(node.dot_token);
    v.visit_member(&node.member);
}
#[cfg(feature = "full")]
#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
pub fn visit_expr_for_loop<'ast, V>(v: &mut V, node: &'ast crate::ExprForLoop)
where
    V: Visit<'ast> + ?Sized,
{
    for it in &node.attrs {
        v.visit_attribute(it);
    }
    if let Some(it) = &node.label {
        v.visit_label(it);
    }
    skip!(node.for_token);
    v.visit_pat(&*node.pat);
    skip!(node.in_token);
    v.visit_expr(&*node.expr);
    v.visit_block(&node.body);
}
#[cfg(any(feature = "derive", feature = "full"))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
pub fn visit_expr_group<'ast, V>(v: &mut V, node: &'ast crate::ExprGroup)
where
    V: Visit<'ast> + ?Sized,
{
    for it in &node.attrs {
        v.visit_attribute(it);
    }
    skip!(node.group_token);
    v.visit_expr(&*node.expr);
}
#[cfg(feature = "full")]
#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
pub fn visit_expr_if<'ast, V>(v: &mut V, node: &'ast crate::ExprIf)
where
    V: Visit<'ast> + ?Sized,
{
    for it in &node.attrs {
        v.visit_attribute(it);
    }
    skip!(node.if_token);
    v.visit_expr(&*node.cond);
    v.visit_block(&node.then_branch);
    if let Some(it) = &node.else_branch {
        skip!((it).0);
        v.visit_expr(&*(it).1);
    }
}
#[cfg(any(feature = "derive", feature = "full"))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
pub fn visit_expr_index<'ast, V>(v: &mut V, node: &'ast crate::ExprIndex)
where
    V: Visit<'ast> + ?Sized,
{
    for it in &node.attrs {
        v.visit_attribute(it);
    }
    v.visit_expr(&*node.expr);
    skip!(node.bracket_token);
    v.visit_expr(&*node.index);
}
#[cfg(feature = "full")]
#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
pub fn visit_expr_infer<'ast, V>(v: &mut V, node: &'ast crate::ExprInfer)
where
    V: Visit<'ast> + ?Sized,
{
    for it in &node.attrs {
        v.visit_attribute(it);
    }
    skip!(node.underscore_token);
}
#[cfg(feature = "full")]
#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
pub fn visit_expr_let<'ast, V>(v: &mut V, node: &'ast crate::ExprLet)
where
    V: Visit<'ast> + ?Sized,
{
    for it in &node.attrs {
        v.visit_attribute(it);
    }
    skip!(node.let_token);
    v.visit_pat(&*node.pat);
    skip!(node.eq_token);
    v.visit_expr(&*node.expr);
}
#[cfg(any(feature = "derive", feature = "full"))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
pub fn visit_expr_lit<'ast, V>(v: &mut V, node: &'ast crate::ExprLit)
where
    V: Visit<'ast> + ?Sized,
{
    for it in &node.attrs {
        v.visit_attribute(it);
    }
    v.visit_lit(&node.lit);
}
#[cfg(feature = "full")]
#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
pub fn visit_expr_loop<'ast, V>(v: &mut V, node: &'ast crate::ExprLoop)
where
    V: Visit<'ast> + ?Sized,
{
    for it in &node.attrs {
        v.visit_attribute(it);
    }
    if let Some(it) = &node.label {
        v.visit_label(it);
    }
    skip!(node.loop_token);
    v.visit_block(&node.body);
}
#[cfg(any(feature = "derive", feature = "full"))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
pub fn visit_expr_macro<'ast, V>(v: &mut V, node: &'ast crate::ExprMacro)
where
    V: Visit<'ast> + ?Sized,
{
    for it in &node.attrs {
        v.visit_attribute(it);
    }
    v.visit_macro(&node.mac);
}
#[cfg(feature = "full")]
#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
pub fn visit_expr_match<'ast, V>(v: &mut V, node: &'ast crate::ExprMatch)
where
    V: Visit<'ast> + ?Sized,
{
    for it in &node.attrs {
        v.visit_attribute(it);
    }
    skip!(node.match_token);
    v.visit_expr(&*node.expr);
    skip!(node.brace_token);
    for it in &node.arms {
        v.visit_arm(it);
    }
}
#[cfg(any(feature = "derive", feature = "full"))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
pub fn visit_expr_method_call<'ast, V>(v: &mut V, node: &'ast crate::ExprMethodCall)
where
    V: Visit<'ast> + ?Sized,
{
    for it in &node.attrs {
        v.visit_attribute(it);
    }
    v.visit_expr(&*node.receiver);
    skip!(node.dot_token);
    v.visit_ident(&node.method);
    if let Some(it) = &node.turbofish {
        v.visit_angle_bracketed_generic_arguments(it);
    }
    skip!(node.paren_token);
    for el in Punctuated::pairs(&node.args) {
        let it = el.value();
        v.visit_expr(it);
    }
}
#[cfg(any(feature = "derive", feature = "full"))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
pub fn visit_expr_paren<'ast, V>(v: &mut V, node: &'ast crate::ExprParen)
where
    V: Visit<'ast> + ?Sized,
{
    for it in &node.attrs {
        v.visit_attribute(it);
    }
    skip!(node.paren_token);
    v.visit_expr(&*node.expr);
}
#[cfg(any(feature = "derive", feature = "full"))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
pub fn visit_expr_path<'ast, V>(v: &mut V, node: &'ast crate::ExprPath)
where
    V: Visit<'ast> + ?Sized,
{
    for it in &node.attrs {
        v.visit_attribute(it);
    }
    if let Some(it) = &node.qself {
        v.visit_qself(it);
    }
    v.visit_path(&node.path);
}
#[cfg(feature = "full")]
#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
pub fn visit_expr_range<'ast, V>(v: &mut V, node: &'ast crate::ExprRange)
where
    V: Visit<'ast> + ?Sized,
{
    for it in &node.attrs {
        v.visit_attribute(it);
    }
    if let Some(it) = &node.start {
        v.visit_expr(&**it);
    }
    v.visit_range_limits(&node.limits);
    if let Some(it) = &node.end {
        v.visit_expr(&**it);
    }
}
#[cfg(feature = "full")]
#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
pub fn visit_expr_raw_addr<'ast, V>(v: &mut V, node: &'ast crate::ExprRawAddr)
where
    V: Visit<'ast> + ?Sized,
{
    for it in &node.attrs {
        v.visit_attribute(it);
    }
    skip!(node.and_token);
    skip!(node.raw);
    v.visit_pointer_mutability(&node.mutability);
    v.visit_expr(&*node.expr);
}
#[cfg(any(feature = "derive", feature = "full"))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
pub fn visit_expr_reference<'ast, V>(v: &mut V, node: &'ast crate::ExprReference)
where
    V: Visit<'ast> + ?Sized,
{
    for it in &node.attrs {
        v.visit_attribute(it);
    }
    skip!(node.and_token);
    skip!(node.mutability);
    v.visit_expr(&*node.expr);
}
#[cfg(feature = "full")]
#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
pub fn visit_expr_repeat<'ast, V>(v: &mut V, node: &'ast crate::ExprRepeat)
where
    V: Visit<'ast> + ?Sized,
{
    for it in &node.attrs {
        v.visit_attribute(it);
    }
    skip!(node.bracket_token);
    v.visit_expr(&*node.expr);
    skip!(node.semi_token);
    v.visit_expr(&*node.len);
}
#[cfg(feature = "full")]
#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
--> --------------------

--> maximum size reached

--> --------------------

[ Seitenstruktur0.85Drucken  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge