[][src]Struct wirefilter::Filter

pub struct Filter<'s> { /* fields omitted */ }

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.

Methods

impl<'s> Filter<'s>[src]

pub fn execute(
    &self,
    ctx: &ExecutionContext<'s>
) -> Result<bool, SchemeMismatchError>
[src]

Executes a filter against a provided context with values.

Auto Trait Implementations

impl<'s> !Send for Filter<'s>

impl<'s> !Sync for Filter<'s>

Blanket Implementations

impl<T, U> Into for T where
    U: From<T>, 
[src]

impl<T> From for T[src]

impl<T, U> TryFrom for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T> Borrow for T where
    T: ?Sized
[src]

impl<T> BorrowMut for T where
    T: ?Sized
[src]

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> Any for T where
    T: 'static + ?Sized
[src]