Trait syntax::visit::Visitor [−][src]
pub trait Visitor<'ast>: Sized { fn visit_name(&mut self, _span: Span, _name: Name) { ... } fn visit_ident(&mut self, ident: Ident) { ... } fn visit_mod(
&mut self,
m: &'ast Mod,
_s: Span,
_attrs: &[Attribute],
_n: NodeId
) { ... } fn visit_foreign_item(&mut self, i: &'ast ForeignItem) { ... } fn visit_global_asm(&mut self, ga: &'ast GlobalAsm) { ... } fn visit_item(&mut self, i: &'ast Item) { ... } fn visit_local(&mut self, l: &'ast Local) { ... } fn visit_block(&mut self, b: &'ast Block) { ... } fn visit_stmt(&mut self, s: &'ast Stmt) { ... } fn visit_arm(&mut self, a: &'ast Arm) { ... } fn visit_pat(&mut self, p: &'ast Pat) { ... } fn visit_anon_const(&mut self, c: &'ast AnonConst) { ... } fn visit_expr(&mut self, ex: &'ast Expr) { ... } fn visit_expr_post(&mut self, _ex: &'ast Expr) { ... } fn visit_ty(&mut self, t: &'ast Ty) { ... } fn visit_generic_param(&mut self, param: &'ast GenericParam) { ... } fn visit_generics(&mut self, g: &'ast Generics) { ... } fn visit_where_predicate(&mut self, p: &'ast WherePredicate) { ... } fn visit_fn(
&mut self,
fk: FnKind<'ast>,
fd: &'ast FnDecl,
s: Span,
_: NodeId
) { ... } fn visit_trait_item(&mut self, ti: &'ast TraitItem) { ... } fn visit_impl_item(&mut self, ii: &'ast ImplItem) { ... } fn visit_trait_ref(&mut self, t: &'ast TraitRef) { ... } fn visit_param_bound(&mut self, bounds: &'ast GenericBound) { ... } fn visit_poly_trait_ref(
&mut self,
t: &'ast PolyTraitRef,
m: &'ast TraitBoundModifier
) { ... } fn visit_variant_data(
&mut self,
s: &'ast VariantData,
_: Ident,
_: &'ast Generics,
_: NodeId,
_: Span
) { ... } fn visit_struct_field(&mut self, s: &'ast StructField) { ... } fn visit_enum_def(
&mut self,
enum_definition: &'ast EnumDef,
generics: &'ast Generics,
item_id: NodeId,
_: Span
) { ... } fn visit_variant(
&mut self,
v: &'ast Variant,
g: &'ast Generics,
item_id: NodeId
) { ... } fn visit_label(&mut self, label: &'ast Label) { ... } fn visit_lifetime(&mut self, lifetime: &'ast Lifetime) { ... } fn visit_mac(&mut self, _mac: &'ast Mac) { ... } fn visit_mac_def(&mut self, _mac: &'ast MacroDef, _id: NodeId) { ... } fn visit_path(&mut self, path: &'ast Path, _id: NodeId) { ... } fn visit_use_tree(
&mut self,
use_tree: &'ast UseTree,
id: NodeId,
_nested: bool
) { ... } fn visit_path_segment(
&mut self,
path_span: Span,
path_segment: &'ast PathSegment
) { ... } fn visit_generic_args(
&mut self,
path_span: Span,
generic_args: &'ast GenericArgs
) { ... } fn visit_generic_arg(&mut self, generic_arg: &'ast GenericArg) { ... } fn visit_assoc_type_binding(&mut self, type_binding: &'ast TypeBinding) { ... } fn visit_attribute(&mut self, attr: &'ast Attribute) { ... } fn visit_tt(&mut self, tt: TokenTree) { ... } fn visit_tts(&mut self, tts: TokenStream) { ... } fn visit_token(&mut self, _t: Token) { ... } fn visit_vis(&mut self, vis: &'ast Visibility) { ... } fn visit_fn_ret_ty(&mut self, ret_ty: &'ast FunctionRetTy) { ... } }
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_mod
method by default calls visit::walk_mod
.
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 Methods
fn visit_name(&mut self, _span: Span, _name: Name)
fn visit_ident(&mut self, ident: Ident)
fn visit_mod(
&mut self,
m: &'ast Mod,
_s: Span,
_attrs: &[Attribute],
_n: NodeId
)
&mut self,
m: &'ast Mod,
_s: Span,
_attrs: &[Attribute],
_n: NodeId
)
fn visit_foreign_item(&mut self, i: &'ast ForeignItem)
fn visit_global_asm(&mut self, ga: &'ast GlobalAsm)
fn visit_item(&mut self, i: &'ast Item)
fn visit_local(&mut self, l: &'ast Local)
fn visit_block(&mut self, b: &'ast Block)
fn visit_stmt(&mut self, s: &'ast Stmt)
fn visit_arm(&mut self, a: &'ast Arm)
fn visit_pat(&mut self, p: &'ast Pat)
fn visit_anon_const(&mut self, c: &'ast AnonConst)
fn visit_expr(&mut self, ex: &'ast Expr)
fn visit_expr_post(&mut self, _ex: &'ast Expr)
fn visit_ty(&mut self, t: &'ast Ty)
fn visit_generic_param(&mut self, param: &'ast GenericParam)
fn visit_generics(&mut self, g: &'ast Generics)
fn visit_where_predicate(&mut self, p: &'ast WherePredicate)
fn visit_fn(&mut self, fk: FnKind<'ast>, fd: &'ast FnDecl, s: Span, _: NodeId)
fn visit_trait_item(&mut self, ti: &'ast TraitItem)
fn visit_impl_item(&mut self, ii: &'ast ImplItem)
fn visit_trait_ref(&mut self, t: &'ast TraitRef)
fn visit_param_bound(&mut self, bounds: &'ast GenericBound)
fn visit_poly_trait_ref(
&mut self,
t: &'ast PolyTraitRef,
m: &'ast TraitBoundModifier
)
&mut self,
t: &'ast PolyTraitRef,
m: &'ast TraitBoundModifier
)
fn visit_variant_data(
&mut self,
s: &'ast VariantData,
_: Ident,
_: &'ast Generics,
_: NodeId,
_: Span
)
&mut self,
s: &'ast VariantData,
_: Ident,
_: &'ast Generics,
_: NodeId,
_: Span
)
fn visit_struct_field(&mut self, s: &'ast StructField)
fn visit_enum_def(
&mut self,
enum_definition: &'ast EnumDef,
generics: &'ast Generics,
item_id: NodeId,
_: Span
)
&mut self,
enum_definition: &'ast EnumDef,
generics: &'ast Generics,
item_id: NodeId,
_: Span
)
fn visit_variant(
&mut self,
v: &'ast Variant,
g: &'ast Generics,
item_id: NodeId
)
&mut self,
v: &'ast Variant,
g: &'ast Generics,
item_id: NodeId
)
fn visit_label(&mut self, label: &'ast Label)
fn visit_lifetime(&mut self, lifetime: &'ast Lifetime)
fn visit_mac(&mut self, _mac: &'ast Mac)
fn visit_mac_def(&mut self, _mac: &'ast MacroDef, _id: NodeId)
fn visit_path(&mut self, path: &'ast Path, _id: NodeId)
fn visit_use_tree(&mut self, use_tree: &'ast UseTree, id: NodeId, _nested: bool)
fn visit_path_segment(
&mut self,
path_span: Span,
path_segment: &'ast PathSegment
)
&mut self,
path_span: Span,
path_segment: &'ast PathSegment
)
fn visit_generic_args(
&mut self,
path_span: Span,
generic_args: &'ast GenericArgs
)
&mut self,
path_span: Span,
generic_args: &'ast GenericArgs
)
fn visit_generic_arg(&mut self, generic_arg: &'ast GenericArg)
fn visit_assoc_type_binding(&mut self, type_binding: &'ast TypeBinding)
fn visit_attribute(&mut self, attr: &'ast Attribute)
fn visit_tt(&mut self, tt: TokenTree)
fn visit_tts(&mut self, tts: TokenStream)
fn visit_token(&mut self, _t: Token)
fn visit_vis(&mut self, vis: &'ast Visibility)
fn visit_fn_ret_ty(&mut self, ret_ty: &'ast FunctionRetTy)
Implementors
impl<'ast> Visitor<'ast> for NodeCounter