Trait syntax::visit::Visitor [] [src]

pub trait Visitor<'ast>: Sized {
    fn visit_name(&mut self, _span: Span, _name: Name) { ... }
    fn visit_ident(&mut self, span: Span, ident: Ident) { ... }
    fn visit_mod(&mut self, m: &'ast Mod, _s: Span, _n: NodeId) { ... }
    fn visit_foreign_item(&mut self, i: &'ast ForeignItem) { ... }
    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_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_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_ty_param_bound(&mut self, bounds: &'ast TyParamBound) { ... } 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_lifetime(&mut self, lifetime: &'ast Lifetime) { ... } fn visit_lifetime_def(&mut self, lifetime: &'ast LifetimeDef) { ... } fn visit_mac(&mut self, _mac: &'ast Mac) { ... } fn visit_path(&mut self, path: &'ast Path, _id: NodeId) { ... } fn visit_path_list_item(&mut self,
                            prefix: &'ast Path,
                            item: &'ast PathListItem) { ... } fn visit_path_segment(&mut self,
                          path_span: Span,
                          path_segment: &'ast PathSegment) { ... } fn visit_path_parameters(&mut self,
                             path_span: Span,
                             path_parameters: &'ast PathParameters) { ... } fn visit_assoc_type_binding(&mut self, type_binding: &'ast TypeBinding) { ... } fn visit_attribute(&mut self, _attr: &'ast Attribute) { ... } fn visit_vis(&mut self, vis: &'ast Visibility) { ... } fn visit_fn_ret_ty(&mut self, ret_ty: &'ast FunctionRetTy) { ... } }
🔬 This is a nightly-only experimental API. (rustc_private)

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

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

Implementors