Skip to main content

PreparedExpressions

Struct PreparedExpressions 

Source
pub struct PreparedExpressions { /* private fields */ }
Expand description

A shareable arena snapshot and bounded, reuse-admitted extraction caches. Each cache has 16 independent shards, each retaining at most 16 expressions and 1,024 coefficient entries, evicting in insertion order. Before cache initialization, first encounters return owned terms without locking or allocating cache storage. Only repeated roots are admitted. A small direct-mapped history recognizes reuse across interleaved roots, and collisions may delay admission. Once initialized, cached entries are always checked independently of admission history. Larger decompositions are returned uncached.

Implementations§

Source§

impl PreparedExpressions

Source

pub fn new(arena: ExprArena) -> Self

Source

pub fn arena(&self) -> &ExprArena

Source

pub fn linear(&self, expr: ExprId) -> Option<AffineTerms<'_>>

Direct affine nodes retain their zero-copy path. Reused compound roots may be cached, including failed extractions, within this snapshot’s budget.

§Panics

Panics for an expression outside this arena or a poisoned cache.

Source

pub fn quadratic(&self, expr: ExprId) -> Option<Extracted<QuadraticTerms>>

Extract a quadratic polynomial, sharing terms only after observed reuse.

§Panics

Panics for an expression outside this arena or a poisoned cache.

Source

pub fn detected_soc( &self, variables: &[Variable], row: &Constraint, ) -> Option<SocForm>

Detect an optional cone representation using cached polynomial terms.

Source

pub fn explicit_soc(&self, soc: &SocConstraint) -> Result<SocForm, SolverError>

Extract an explicit cone in one streaming pass over its affine members.

§Errors

Returns a backend error for invalid affine cone members.

Methods from Deref<Target = ExprArena>§

Source

pub fn len(&self) -> usize

Source

pub fn is_empty(&self) -> bool

Source

pub fn get(&self, id: ExprId) -> &ExprNode

Source

pub fn nodes(&self) -> &[ExprNode]

Source

pub fn num_params(&self) -> usize

Source

pub fn param_value(&self, p: ParamId) -> f64

Current value bound to parameter p.

§Panics

Panics if p was not allocated by Self::new_param on this arena.

Source

pub fn try_param_value(&self, p: ParamId) -> Option<f64>

Look up the value of p, returning None if p is out of range.

Trait Implementations§

Source§

impl Debug for PreparedExpressions

Source§

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

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

impl Deref for PreparedExpressions

Source§

type Target = ExprArena

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.

Auto Trait Implementations§

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.