pub trait Visitor<'ast>where
Self: Sized,{
Show 16 methods
// Provided methods
fn visit_expr(&mut self, expr: &'ast Expr) { ... }
fn visit_literal(&mut self, _literal: &'ast Literal) { ... }
fn visit_identifier(&mut self, _ident: &'ast str) { ... }
fn visit_type(&mut self, _cel_type: &'ast CelType) { ... }
fn visit_unary_op(&mut self, op: UnaryOperator, operand: &'ast Expr) { ... }
fn visit_binary_op(
&mut self,
op: BinaryOperator,
left: &'ast Expr,
right: &'ast Expr,
) { ... }
fn visit_conditional(
&mut self,
cond: &'ast Expr,
true_branch: &'ast Expr,
false_branch: &'ast Expr,
) { ... }
fn visit_list(&mut self, elements: &'ast [Expr]) { ... }
fn visit_field_access(&mut self, base: &'ast Expr, field: &'ast str) { ... }
fn visit_call(&mut self, target: &'ast Expr, args: &'ast [Expr]) { ... }
fn visit_index(&mut self, base: &'ast Expr, index: &'ast Expr) { ... }
fn visit_map_literal(&mut self, entries: &'ast [(Expr, Expr)]) { ... }
fn visit_message_literal(
&mut self,
type_name: &'ast str,
fields: &'ast [(String, Expr)],
) { ... }
fn visit_has(&mut self, target: &'ast Expr) { ... }
fn visit_comprehension(
&mut self,
op: ComprehensionOp,
target: &'ast Expr,
iter_var: &'ast str,
predicate: &'ast Expr,
) { ... }
fn visit_map(
&mut self,
target: &'ast Expr,
iter_var: &'ast str,
filter: Option<&'ast Expr>,
transform: &'ast Expr,
) { ... }
}Expand description
A trait for visiting nodes in the AST in an immutable fashion.
The methods in this trait are called during a depth-first traversal of the AST.
The default implementation of each visit_* method recursively visits the children
of the node. To customize the behavior, implement this trait and override the
methods for the nodes you are interested in.
Provided Methods§
Sourcefn visit_expr(&mut self, expr: &'ast Expr)
fn visit_expr(&mut self, expr: &'ast Expr)
Visits any Expr node. This is the main dispatch method.
Sourcefn visit_literal(&mut self, _literal: &'ast Literal)
fn visit_literal(&mut self, _literal: &'ast Literal)
Visits a Literal node (e.g., 123, "hello").
Sourcefn visit_identifier(&mut self, _ident: &'ast str)
fn visit_identifier(&mut self, _ident: &'ast str)
Visits an Identifier node (e.g., request).
Sourcefn visit_type(&mut self, _cel_type: &'ast CelType)
fn visit_type(&mut self, _cel_type: &'ast CelType)
Visits a Type node (e.g., int, string).
Sourcefn visit_unary_op(&mut self, op: UnaryOperator, operand: &'ast Expr)
fn visit_unary_op(&mut self, op: UnaryOperator, operand: &'ast Expr)
Visits a UnaryOp node (e.g., !true).
Sourcefn visit_binary_op(
&mut self,
op: BinaryOperator,
left: &'ast Expr,
right: &'ast Expr,
)
fn visit_binary_op( &mut self, op: BinaryOperator, left: &'ast Expr, right: &'ast Expr, )
Visits a BinaryOp node (e.g., a + b).
Sourcefn visit_conditional(
&mut self,
cond: &'ast Expr,
true_branch: &'ast Expr,
false_branch: &'ast Expr,
)
fn visit_conditional( &mut self, cond: &'ast Expr, true_branch: &'ast Expr, false_branch: &'ast Expr, )
Visits a Conditional node (e.g., cond ? true_br : false_br).
Sourcefn visit_list(&mut self, elements: &'ast [Expr])
fn visit_list(&mut self, elements: &'ast [Expr])
Visits a List literal (e.g., [1, 2, 3]).
Sourcefn visit_field_access(&mut self, base: &'ast Expr, field: &'ast str)
fn visit_field_access(&mut self, base: &'ast Expr, field: &'ast str)
Visits a FieldAccess node (e.g., a.b).
Sourcefn visit_call(&mut self, target: &'ast Expr, args: &'ast [Expr])
fn visit_call(&mut self, target: &'ast Expr, args: &'ast [Expr])
Visits a Call node (e.g., func(arg1, arg2)).
Sourcefn visit_index(&mut self, base: &'ast Expr, index: &'ast Expr)
fn visit_index(&mut self, base: &'ast Expr, index: &'ast Expr)
Visits an Index node (e.g., list[0]).
Sourcefn visit_map_literal(&mut self, entries: &'ast [(Expr, Expr)])
fn visit_map_literal(&mut self, entries: &'ast [(Expr, Expr)])
Visits a MapLiteral node (e.g., {'key': 'value'}).
Sourcefn visit_message_literal(
&mut self,
type_name: &'ast str,
fields: &'ast [(String, Expr)],
)
fn visit_message_literal( &mut self, type_name: &'ast str, fields: &'ast [(String, Expr)], )
Visits a MessageLiteral node (e.g., Point{x: 1, y: 2}).
Sourcefn visit_comprehension(
&mut self,
op: ComprehensionOp,
target: &'ast Expr,
iter_var: &'ast str,
predicate: &'ast Expr,
)
fn visit_comprehension( &mut self, op: ComprehensionOp, target: &'ast Expr, iter_var: &'ast str, predicate: &'ast Expr, )
Visits a Comprehension macro (e.g., list.all(i, i > 0)).
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.