pub enum Expr {
Show 19 variants
Field(String),
Str(String),
I64(i64),
F64(f64),
Bool(bool),
Null,
Array(Vec<Expr>),
FuncCall(String, Vec<Expr>),
MethodCall(String, Box<Expr>, Vec<Expr>),
Gt(Box<Expr>, Box<Expr>),
Lt(Box<Expr>, Box<Expr>),
Ge(Box<Expr>, Box<Expr>),
Le(Box<Expr>, Box<Expr>),
Eq(Box<Expr>, Box<Expr>),
Ne(Box<Expr>, Box<Expr>),
In(Box<Expr>, Box<Expr>),
And(Vec<Expr>),
Or(Vec<Expr>),
Not(Box<Expr>),
}Expand description
The expression.
It is an AST of the filter expression.
Variants§
Field(String)
Str(String)
I64(i64)
F64(f64)
Bool(bool)
Null
Array(Vec<Expr>)
FuncCall(String, Vec<Expr>)
MethodCall(String, Box<Expr>, Vec<Expr>)
Gt(Box<Expr>, Box<Expr>)
Lt(Box<Expr>, Box<Expr>)
Ge(Box<Expr>, Box<Expr>)
Le(Box<Expr>, Box<Expr>)
Eq(Box<Expr>, Box<Expr>)
Ne(Box<Expr>, Box<Expr>)
In(Box<Expr>, Box<Expr>)
And(Vec<Expr>)
Or(Vec<Expr>)
Not(Box<Expr>)
Implementations§
Source§impl Expr
impl Expr
Sourcepub fn transform<F: Transform>(self, transformer: &mut F) -> Expr
pub fn transform<F: Transform>(self, transformer: &mut F) -> Expr
Recursively transform an expression using the provided transformer.
use filter_expr::{Expr, Transform};
struct MyTransformer;
impl Transform for MyTransformer {
fn transform(&mut self, expr: Expr) -> Expr {
// Transform the expression before recursing
match expr {
Expr::Field(name) if name == "old_name" => {
Expr::Field("new_name".to_string())
}
other => other,
}
}
}
let expr = Expr::Field("old_name".to_string());
let mut transformer = MyTransformer;
let result = expr.transform(&mut transformer);
assert_eq!(result, Expr::Field("new_name".to_string()));Trait Implementations§
impl StructuralPartialEq for Expr
Auto Trait Implementations§
impl Freeze for Expr
impl RefUnwindSafe for Expr
impl Send for Expr
impl Sync for Expr
impl Unpin for Expr
impl UnwindSafe for Expr
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more