Skip to main content

Engine

Struct Engine 

Source
pub struct Engine<T> { /* private fields */ }
Expand description

Global context for how to evaluate an expression

Mostly this holds all of the functions that can be called during evaluation.

This can typically be created once and used any time an expression evaluation needs to happen.

Implementations§

Source§

impl<T> Engine<T>

Source

pub fn empty() -> Self

Create a new engine that does not contain any defined functions

Source

pub fn function(&self, name: &str) -> Option<&dyn Function<T>>

Get a function by name

Source

pub fn set_function( &mut self, name: impl ToString, function: Box<dyn Function<T>>, )

Add or override a function with the given name

use rets_expression::{Engine, function::{ListFunction, SetFunction}};

let mut engine = Engine::empty();
engine.set_function("LIST", Box::new(ListFunction));
engine.set_function("SET", Box::new(SetFunction));
Source

pub fn with_function( self, name: impl ToString, function: Box<dyn Function<T>>, ) -> Self

Add or override a function with the given name

use rets_expression::{Engine, function::{ListFunction, SetFunction}};

let engine = Engine::empty()
    .with_function("LIST", Box::new(ListFunction))
    .with_function("SET", Box::new(SetFunction));

Trait Implementations§

Source§

impl<T> Debug for Engine<T>
where T: Debug,

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<T> Default for Engine<T>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<T> Freeze for Engine<T>

§

impl<T> !RefUnwindSafe for Engine<T>

§

impl<T> !Send for Engine<T>

§

impl<T> !Sync for Engine<T>

§

impl<T> Unpin for Engine<T>

§

impl<T> UnsafeUnpin for Engine<T>

§

impl<T> !UnwindSafe for Engine<T>

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.