pub enum Expr {
Show 25 variants
Bool(bool),
Rand(u16),
Contains(String),
StartsWith(String),
EndsWith(String),
Equals(String),
Matches(String),
PartContains {
part: String,
value: String,
},
PartIContains {
part: String,
value: String,
},
PartStartsWith {
part: String,
value: String,
},
PartEndsWith {
part: String,
value: String,
},
PartEquals {
part: String,
value: String,
},
PartIEquals {
part: String,
value: String,
},
PartNotEquals {
part: String,
value: String,
},
PartMatches {
part: String,
pattern: String,
},
PartInSet {
part: String,
values: Vec<String>,
},
PartIsEmpty {
part: String,
},
PartNotEmpty {
part: String,
},
HeaderEquals {
part: String,
header: String,
value: String,
},
HeaderIEquals {
part: String,
header: String,
value: String,
},
HeaderContains {
part: String,
header: String,
value: String,
},
HeaderExists {
part: String,
header: String,
},
And(Box<Expr>, Box<Expr>),
Or(Box<Expr>, Box<Expr>),
Not(Box<Expr>),
}Expand description
AST node for filter expressions.
Variants§
Bool(bool)
Boolean literal: true or false
Rand(u16)
Random sampling: rand(N) returns true with probability 1/N
Contains(String)
Payload-wide contains: payload contains “string”
StartsWith(String)
Payload-wide starts_with: payload starts_with “string”
EndsWith(String)
Payload-wide ends_with: payload ends_with “string”
Equals(String)
Payload-wide equals: payload == “string”
Matches(String)
Payload-wide regex match: payload matches “pattern”
PartContains
Part-specific contains: FIELD contains “string”
PartIContains
Part-specific case-insensitive contains
PartStartsWith
Part-specific starts_with
PartEndsWith
Part-specific ends_with
PartEquals
Part-specific equals: FIELD == “string”
PartIEquals
Part-specific case-insensitive equals
PartNotEquals
Part-specific not equals: FIELD != “string”
PartMatches
Part-specific regex match: FIELD matches “pattern”
PartInSet
Part-specific set membership: FIELD in {“a”, “b”, “c”}
PartIsEmpty
Part is empty: FIELD is_empty
PartNotEmpty
Part is not empty: FIELD not_empty
HeaderEquals
Header extraction with equals: FIELD.header(“name”) == “value”
HeaderIEquals
Header extraction with case-insensitive equals
HeaderContains
Header extraction with contains
HeaderExists
Header exists: FIELD.header(“name”) exists
And(Box<Expr>, Box<Expr>)
Logical AND
Or(Box<Expr>, Box<Expr>)
Logical OR
Not(Box<Expr>)
Logical NOT