Trait Visitor

Source
pub trait Visitor {
    type Output;

    // Required methods
    fn visit_operation(
        &self,
        operation: &Operation,
    ) -> Result<Self::Output, String>;
    fn visit_comparison(
        &self,
        comparison: &Comparison,
    ) -> Result<Self::Output, String>;
    fn visit_structured_query(
        &self,
        structured_query: &StructuredQuery,
    ) -> Result<Self::Output, String>;

    // Provided methods
    fn allowed_comparators(&self) -> Option<&[Comparator]> { ... }
    fn allowed_operators(&self) -> Option<&[Operator]> { ... }
    fn validate_func(&self, func: &dyn Function) -> Result<(), String> { ... }
}
Expand description

Defines interface for IR translation using a visitor pattern.

Required Associated Types§

Source

type Output

The result type of visiting expressions

Required Methods§

Source

fn visit_operation(&self, operation: &Operation) -> Result<Self::Output, String>

Translate an Operation

Source

fn visit_comparison( &self, comparison: &Comparison, ) -> Result<Self::Output, String>

Translate a Comparison

Source

fn visit_structured_query( &self, structured_query: &StructuredQuery, ) -> Result<Self::Output, String>

Translate a StructuredQuery

Provided Methods§

Source

fn allowed_comparators(&self) -> Option<&[Comparator]>

Allowed comparators for the visitor

Source

fn allowed_operators(&self) -> Option<&[Operator]>

Allowed operators for the visitor

Source

fn validate_func(&self, func: &dyn Function) -> Result<(), String>

Validate that a function (operator or comparator) is allowed

Implementors§