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.