CompiledExprRef

Struct CompiledExprRef 

Source
pub struct CompiledExprRef<K = String> { /* private fields */ }
Expand description

A compiled, executable expression that is evaluated via references or pointers.

Created by Tabula::compile_ref. This version is optimized for evaluation methods that use pointers (eval and eval_ptrs), which can be slightly more efficient if the underlying data is not contiguous.

Implementations§

Source§

impl<K> CompiledExprRef<K>

Source

pub fn vars(&self) -> &[K]

Returns a slice of variable keys in the order they must be supplied for evaluation.

Source

pub fn eval(&self, values: &[&f64]) -> Result<f64, JitError>

Evaluates the compiled expression with the given values (as references).

The values slice must provide &f64 references in the exact order specified by vars().

§Examples
use tabulon::Tabula;

let mut engine = Tabula::new();
let expr = engine.compile_ref("a * b").unwrap();

let a = 10.0;
let b = 5.5;

// Pass values as a slice of references
let result = expr.eval(&[&a, &b]).unwrap();
assert_eq!(result, 55.0);
§Errors
  • JitError::ValuesLen if values.len() is less than self.vars().len().
  • JitError::Invalidated if the expression was invalidated by Tabula::free_memory.
Source

pub fn eval_ptrs(&self, ptrs: &[*const f64]) -> Result<f64, JitError>

Evaluates this compiled expression using raw pointers to f64 inputs.

This is an advanced, unsafe API for integrations (e.g., FFI) where holding references is not feasible. Pointers must be valid and point to live f64 data.

§Safety

The caller must ensure that each pointer in ptrs is valid, aligned, and points to memory that outlives the duration of this call. Misuse can lead to undefined behavior.

Trait Implementations§

Source§

impl<K: Clone> Clone for CompiledExprRef<K>

Source§

fn clone(&self) -> CompiledExprRef<K>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

Auto Trait Implementations§

§

impl<K> Freeze for CompiledExprRef<K>

§

impl<K> RefUnwindSafe for CompiledExprRef<K>
where K: RefUnwindSafe,

§

impl<K> Send for CompiledExprRef<K>
where K: Send,

§

impl<K> Sync for CompiledExprRef<K>
where K: Sync,

§

impl<K> Unpin for CompiledExprRef<K>
where K: Unpin,

§

impl<K> UnwindSafe for CompiledExprRef<K>
where K: UnwindSafe,

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.