Skip to main content

Visitor

Trait Visitor 

Source
pub trait Visitor: Sized {
Show 65 methods // Provided methods fn visit_expr(&mut self, _expr: &Expr) -> bool { ... } fn leave_expr(&mut self, _expr: &Expr) { ... } fn visit_stmt(&mut self, _stmt: &Statement) -> bool { ... } fn leave_stmt(&mut self, _stmt: &Statement) { ... } fn visit_item(&mut self, _item: &Item) -> bool { ... } fn leave_item(&mut self, _item: &Item) { ... } fn visit_function(&mut self, _func: &FunctionDef) -> bool { ... } fn leave_function(&mut self, _func: &FunctionDef) { ... } fn visit_literal(&mut self, _lit: &Literal) -> bool { ... } fn leave_literal(&mut self, _lit: &Literal) { ... } fn visit_block(&mut self, _block: &BlockExpr) -> bool { ... } fn leave_block(&mut self, _block: &BlockExpr) { ... } fn visit_expr_literal(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_identifier(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_data_ref(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_data_datetime_ref( &mut self, _expr: &Expr, _span: Span, ) -> bool { ... } fn visit_expr_data_relative_access( &mut self, _expr: &Expr, _span: Span, ) -> bool { ... } fn visit_expr_property_access(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_index_access(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_binary_op(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_fuzzy_comparison(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_unary_op(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_function_call(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_enum_constructor(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_time_ref(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_datetime(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_pattern_ref(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_conditional(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_object(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_array(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_list_comprehension( &mut self, _expr: &Expr, _span: Span, ) -> bool { ... } fn visit_expr_block(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_type_assertion(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_instance_of(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_function_expr(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_duration(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_spread(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_if(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_while(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_for(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_loop(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_let(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_assign(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_break(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_continue(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_return(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_method_call(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_match(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_unit(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_range(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_timeframe_context( &mut self, _expr: &Expr, _span: Span, ) -> bool { ... } fn visit_expr_try_operator(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_using_impl(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_simulation_call(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_window_expr(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_from_query(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_struct_literal(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_await(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_join(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_annotated(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_async_let(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_async_scope(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_comptime(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_comptime_for(&mut self, _expr: &Expr, _span: Span) -> bool { ... } fn visit_expr_reference(&mut self, _expr: &Expr, _span: Span) -> bool { ... }
}
Expand description

A visitor trait for traversing Shape AST nodes.

All visit_* methods return bool:

  • true: continue visiting children
  • false: skip children

The leave_* methods are called after visiting all children.

§Per-Variant Expression Methods

For finer granularity, override the per-variant expression methods (e.g., visit_identifier, visit_binary_op, visit_method_call). These are called from walk_expr after the coarse visit_expr hook. Each receives the full &Expr node and its Span.

Provided Methods§

Source

fn visit_expr(&mut self, _expr: &Expr) -> bool

Called before visiting any expression. Return false to skip entirely (neither per-variant method nor children will be visited).

Source

fn leave_expr(&mut self, _expr: &Expr)

Called after visiting an expression and all its children.

Source

fn visit_stmt(&mut self, _stmt: &Statement) -> bool

Source

fn leave_stmt(&mut self, _stmt: &Statement)

Source

fn visit_item(&mut self, _item: &Item) -> bool

Source

fn leave_item(&mut self, _item: &Item)

Source

fn visit_function(&mut self, _func: &FunctionDef) -> bool

Source

fn leave_function(&mut self, _func: &FunctionDef)

Source

fn visit_literal(&mut self, _lit: &Literal) -> bool

Source

fn leave_literal(&mut self, _lit: &Literal)

Source

fn visit_block(&mut self, _block: &BlockExpr) -> bool

Source

fn leave_block(&mut self, _block: &BlockExpr)

Source

fn visit_expr_literal(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_identifier(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_data_ref(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_data_datetime_ref(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_data_relative_access(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_property_access(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_index_access(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_binary_op(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_fuzzy_comparison(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_unary_op(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_function_call(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_enum_constructor(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_time_ref(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_datetime(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_pattern_ref(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_conditional(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_object(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_array(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_list_comprehension(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_block(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_type_assertion(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_instance_of(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_function_expr(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_duration(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_spread(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_if(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_while(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_for(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_loop(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_let(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_assign(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_break(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_continue(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_return(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_method_call(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_match(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_unit(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_range(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_timeframe_context(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_try_operator(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_using_impl(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_simulation_call(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_window_expr(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_from_query(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_struct_literal(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_await(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_join(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_annotated(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_async_let(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_async_scope(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_comptime(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_comptime_for(&mut self, _expr: &Expr, _span: Span) -> bool

Source

fn visit_expr_reference(&mut self, _expr: &Expr, _span: Span) -> bool

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.

Implementors§