Struct Filter

Source
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>

Source

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

Executes a filter against a provided context with values.

Auto Trait Implementations§

§

impl<'s> Freeze for Filter<'s>

§

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

§

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

§

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

§

impl<'s> Unpin for Filter<'s>

§

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

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.