pub struct Filter<'s> { /* private fields */ }
Expand description
An IR for a compiled filter expression.
Currently it works by creating and combining boxed untyped closures and performing indirect calls between them, which is fairly cheap, but, surely, not as fast as an inline code with real JIT compilers.
On the other hand, it’s much less risky than allocating, trusting and executing code at runtime, because all the code being executed is already statically generated and verified by the Rust compiler and only the data differs. For the same reason, our “compilation” times are much better than with a full JIT compiler as well.
In the future the underlying representation might change, but for now it provides the best trade-off between safety and performance of compilation and execution.
Implementations§
Source§impl<'s> Filter<'s>
impl<'s> Filter<'s>
Sourcepub fn execute(
&self,
ctx: &ExecutionContext<'s>,
) -> Result<bool, SchemeMismatchError>
pub fn execute( &self, ctx: &ExecutionContext<'s>, ) -> Result<bool, SchemeMismatchError>
Executes a filter against a provided context with values.