pub trait Visitor<'ast>: Sized {
type Result: VisitorResult = ();
Show 53 methods
// Provided methods
fn visit_ident(&mut self, _ident: &'ast Ident) -> Self::Result { ... }
fn visit_foreign_item(&mut self, i: &'ast ForeignItem) -> Self::Result { ... }
fn visit_item(&mut self, i: &'ast Item) -> Self::Result { ... }
fn visit_local(&mut self, l: &'ast Local) -> Self::Result { ... }
fn visit_block(&mut self, b: &'ast Block) -> Self::Result { ... }
fn visit_stmt(&mut self, s: &'ast Stmt) -> Self::Result { ... }
fn visit_param(&mut self, param: &'ast Param) -> Self::Result { ... }
fn visit_arm(&mut self, a: &'ast Arm) -> Self::Result { ... }
fn visit_pat(&mut self, p: &'ast Pat) -> Self::Result { ... }
fn visit_anon_const(&mut self, c: &'ast AnonConst) -> Self::Result { ... }
fn visit_expr(&mut self, ex: &'ast Expr) -> Self::Result { ... }
fn visit_method_receiver_expr(&mut self, ex: &'ast Expr) -> Self::Result { ... }
fn visit_ty(&mut self, t: &'ast Ty) -> Self::Result { ... }
fn visit_generic_param(&mut self, param: &'ast GenericParam) -> Self::Result { ... }
fn visit_generics(&mut self, g: &'ast Generics) -> Self::Result { ... }
fn visit_closure_binder(&mut self, b: &'ast ClosureBinder) -> Self::Result { ... }
fn visit_where_predicate(&mut self, p: &'ast WherePredicate) -> Self::Result { ... }
fn visit_where_predicate_kind(
&mut self,
k: &'ast WherePredicateKind,
) -> Self::Result { ... }
fn visit_fn(&mut self, fk: FnKind<'ast>, _: Span, _: NodeId) -> Self::Result { ... }
fn visit_assoc_item(
&mut self,
i: &'ast AssocItem,
ctxt: AssocCtxt,
) -> Self::Result { ... }
fn visit_trait_ref(&mut self, t: &'ast TraitRef) -> Self::Result { ... }
fn visit_param_bound(
&mut self,
bounds: &'ast GenericBound,
_ctxt: BoundKind,
) -> Self::Result { ... }
fn visit_precise_capturing_arg(
&mut self,
arg: &'ast PreciseCapturingArg,
) -> Self::Result { ... }
fn visit_poly_trait_ref(&mut self, t: &'ast PolyTraitRef) -> Self::Result { ... }
fn visit_variant_data(&mut self, s: &'ast VariantData) -> Self::Result { ... }
fn visit_field_def(&mut self, s: &'ast FieldDef) -> Self::Result { ... }
fn visit_enum_def(&mut self, enum_definition: &'ast EnumDef) -> Self::Result { ... }
fn visit_variant(&mut self, v: &'ast Variant) -> Self::Result { ... }
fn visit_variant_discr(&mut self, discr: &'ast AnonConst) -> Self::Result { ... }
fn visit_label(&mut self, label: &'ast Label) -> Self::Result { ... }
fn visit_lifetime(
&mut self,
lifetime: &'ast Lifetime,
_: LifetimeCtxt,
) -> Self::Result { ... }
fn visit_mac_call(&mut self, mac: &'ast MacCall) -> Self::Result { ... }
fn visit_mac_def(
&mut self,
_mac: &'ast MacroDef,
_id: NodeId,
) -> Self::Result { ... }
fn visit_path(&mut self, path: &'ast Path, _id: NodeId) -> Self::Result { ... }
fn visit_use_tree(
&mut self,
use_tree: &'ast UseTree,
id: NodeId,
_nested: bool,
) -> Self::Result { ... }
fn visit_path_segment(
&mut self,
path_segment: &'ast PathSegment,
) -> Self::Result { ... }
fn visit_generic_args(
&mut self,
generic_args: &'ast GenericArgs,
) -> Self::Result { ... }
fn visit_generic_arg(
&mut self,
generic_arg: &'ast GenericArg,
) -> Self::Result { ... }
fn visit_assoc_item_constraint(
&mut self,
constraint: &'ast AssocItemConstraint,
) -> Self::Result { ... }
fn visit_attribute(&mut self, attr: &'ast Attribute) -> Self::Result { ... }
fn visit_vis(&mut self, vis: &'ast Visibility) -> Self::Result { ... }
fn visit_fn_ret_ty(&mut self, ret_ty: &'ast FnRetTy) -> Self::Result { ... }
fn visit_fn_header(&mut self, header: &'ast FnHeader) -> Self::Result { ... }
fn visit_expr_field(&mut self, f: &'ast ExprField) -> Self::Result { ... }
fn visit_pat_field(&mut self, fp: &'ast PatField) -> Self::Result { ... }
fn visit_crate(&mut self, krate: &'ast Crate) -> Self::Result { ... }
fn visit_inline_asm(&mut self, asm: &'ast InlineAsm) -> Self::Result { ... }
fn visit_format_args(&mut self, fmt: &'ast FormatArgs) -> Self::Result { ... }
fn visit_inline_asm_sym(&mut self, sym: &'ast InlineAsmSym) -> Self::Result { ... }
fn visit_capture_by(&mut self, _capture_by: &'ast CaptureBy) -> Self::Result { ... }
fn visit_coroutine_kind(
&mut self,
_coroutine_kind: &'ast CoroutineKind,
) -> Self::Result { ... }
fn visit_fn_decl(&mut self, fn_decl: &'ast FnDecl) -> Self::Result { ... }
fn visit_qself(&mut self, qs: &'ast Option<P<QSelf>>) -> Self::Result { ... }
}
Expand description
Each method of the Visitor
trait is a hook to be potentially
overridden. Each method’s default implementation recursively visits
the substructure of the input via the corresponding walk
method;
e.g., the visit_item
method by default calls visit::walk_item
.
If you want to ensure that your code handles every variant
explicitly, you need to override each method. (And you also need
to monitor future changes to Visitor
in case a new method with a
new default implementation gets introduced.)
Provided Associated Types§
Sourcetype Result: VisitorResult = ()
type Result: VisitorResult = ()
The result type of the visit_*
methods. Can be either ()
,
or ControlFlow<T>
.
Provided Methods§
fn visit_ident(&mut self, _ident: &'ast Ident) -> Self::Result
fn visit_foreign_item(&mut self, i: &'ast ForeignItem) -> Self::Result
fn visit_item(&mut self, i: &'ast Item) -> Self::Result
fn visit_local(&mut self, l: &'ast Local) -> Self::Result
fn visit_block(&mut self, b: &'ast Block) -> Self::Result
fn visit_stmt(&mut self, s: &'ast Stmt) -> Self::Result
fn visit_param(&mut self, param: &'ast Param) -> Self::Result
fn visit_arm(&mut self, a: &'ast Arm) -> Self::Result
fn visit_pat(&mut self, p: &'ast Pat) -> Self::Result
fn visit_anon_const(&mut self, c: &'ast AnonConst) -> Self::Result
fn visit_expr(&mut self, ex: &'ast Expr) -> Self::Result
Sourcefn visit_method_receiver_expr(&mut self, ex: &'ast Expr) -> Self::Result
fn visit_method_receiver_expr(&mut self, ex: &'ast Expr) -> Self::Result
This method is a hack to workaround unstable of stmt_expr_attributes
.
It can be removed once that feature is stabilized.
fn visit_ty(&mut self, t: &'ast Ty) -> Self::Result
fn visit_generic_param(&mut self, param: &'ast GenericParam) -> Self::Result
fn visit_generics(&mut self, g: &'ast Generics) -> Self::Result
fn visit_closure_binder(&mut self, b: &'ast ClosureBinder) -> Self::Result
fn visit_where_predicate(&mut self, p: &'ast WherePredicate) -> Self::Result
fn visit_where_predicate_kind( &mut self, k: &'ast WherePredicateKind, ) -> Self::Result
fn visit_fn(&mut self, fk: FnKind<'ast>, _: Span, _: NodeId) -> Self::Result
fn visit_assoc_item( &mut self, i: &'ast AssocItem, ctxt: AssocCtxt, ) -> Self::Result
fn visit_trait_ref(&mut self, t: &'ast TraitRef) -> Self::Result
fn visit_param_bound( &mut self, bounds: &'ast GenericBound, _ctxt: BoundKind, ) -> Self::Result
fn visit_precise_capturing_arg( &mut self, arg: &'ast PreciseCapturingArg, ) -> Self::Result
fn visit_poly_trait_ref(&mut self, t: &'ast PolyTraitRef) -> Self::Result
fn visit_variant_data(&mut self, s: &'ast VariantData) -> Self::Result
fn visit_field_def(&mut self, s: &'ast FieldDef) -> Self::Result
fn visit_enum_def(&mut self, enum_definition: &'ast EnumDef) -> Self::Result
fn visit_variant(&mut self, v: &'ast Variant) -> Self::Result
fn visit_variant_discr(&mut self, discr: &'ast AnonConst) -> Self::Result
fn visit_label(&mut self, label: &'ast Label) -> Self::Result
fn visit_lifetime( &mut self, lifetime: &'ast Lifetime, _: LifetimeCtxt, ) -> Self::Result
fn visit_mac_call(&mut self, mac: &'ast MacCall) -> Self::Result
fn visit_mac_def(&mut self, _mac: &'ast MacroDef, _id: NodeId) -> Self::Result
fn visit_path(&mut self, path: &'ast Path, _id: NodeId) -> Self::Result
fn visit_use_tree( &mut self, use_tree: &'ast UseTree, id: NodeId, _nested: bool, ) -> Self::Result
fn visit_path_segment( &mut self, path_segment: &'ast PathSegment, ) -> Self::Result
fn visit_generic_args( &mut self, generic_args: &'ast GenericArgs, ) -> Self::Result
fn visit_generic_arg(&mut self, generic_arg: &'ast GenericArg) -> Self::Result
fn visit_assoc_item_constraint( &mut self, constraint: &'ast AssocItemConstraint, ) -> Self::Result
fn visit_attribute(&mut self, attr: &'ast Attribute) -> Self::Result
fn visit_vis(&mut self, vis: &'ast Visibility) -> Self::Result
fn visit_fn_ret_ty(&mut self, ret_ty: &'ast FnRetTy) -> Self::Result
fn visit_fn_header(&mut self, header: &'ast FnHeader) -> Self::Result
fn visit_expr_field(&mut self, f: &'ast ExprField) -> Self::Result
fn visit_pat_field(&mut self, fp: &'ast PatField) -> Self::Result
fn visit_crate(&mut self, krate: &'ast Crate) -> Self::Result
fn visit_inline_asm(&mut self, asm: &'ast InlineAsm) -> Self::Result
fn visit_format_args(&mut self, fmt: &'ast FormatArgs) -> Self::Result
fn visit_inline_asm_sym(&mut self, sym: &'ast InlineAsmSym) -> Self::Result
fn visit_capture_by(&mut self, _capture_by: &'ast CaptureBy) -> Self::Result
fn visit_coroutine_kind( &mut self, _coroutine_kind: &'ast CoroutineKind, ) -> Self::Result
fn visit_fn_decl(&mut self, fn_decl: &'ast FnDecl) -> Self::Result
fn visit_qself(&mut self, qs: &'ast Option<P<QSelf>>) -> Self::Result
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.