CompiledLogic

Enum CompiledLogic 

Source
pub enum CompiledLogic {
Show 87 variants Null, Bool(bool), Number(String), String(String), Array(Vec<CompiledLogic>), Var(String, Option<Box<CompiledLogic>>), Ref(String, Option<Box<CompiledLogic>>), And(Vec<CompiledLogic>), Or(Vec<CompiledLogic>), Not(Box<CompiledLogic>), If(Box<CompiledLogic>, Box<CompiledLogic>, Box<CompiledLogic>), Equal(Box<CompiledLogic>, Box<CompiledLogic>), StrictEqual(Box<CompiledLogic>, Box<CompiledLogic>), NotEqual(Box<CompiledLogic>, Box<CompiledLogic>), StrictNotEqual(Box<CompiledLogic>, Box<CompiledLogic>), LessThan(Box<CompiledLogic>, Box<CompiledLogic>), LessThanOrEqual(Box<CompiledLogic>, Box<CompiledLogic>), GreaterThan(Box<CompiledLogic>, Box<CompiledLogic>), GreaterThanOrEqual(Box<CompiledLogic>, Box<CompiledLogic>), Add(Vec<CompiledLogic>), Subtract(Vec<CompiledLogic>), Multiply(Vec<CompiledLogic>), Divide(Vec<CompiledLogic>), Modulo(Box<CompiledLogic>, Box<CompiledLogic>), Power(Box<CompiledLogic>, Box<CompiledLogic>), Map(Box<CompiledLogic>, Box<CompiledLogic>), Filter(Box<CompiledLogic>, Box<CompiledLogic>), Reduce(Box<CompiledLogic>, Box<CompiledLogic>, Box<CompiledLogic>), All(Box<CompiledLogic>, Box<CompiledLogic>), Some(Box<CompiledLogic>, Box<CompiledLogic>), None(Box<CompiledLogic>, Box<CompiledLogic>), Merge(Vec<CompiledLogic>), In(Box<CompiledLogic>, Box<CompiledLogic>), Cat(Vec<CompiledLogic>), Substr(Box<CompiledLogic>, Box<CompiledLogic>, Option<Box<CompiledLogic>>), Missing(Vec<String>), MissingSome(Box<CompiledLogic>, Vec<String>), Abs(Box<CompiledLogic>), Max(Vec<CompiledLogic>), Min(Vec<CompiledLogic>), Pow(Box<CompiledLogic>, Box<CompiledLogic>), Round(Box<CompiledLogic>, Option<Box<CompiledLogic>>), RoundUp(Box<CompiledLogic>, Option<Box<CompiledLogic>>), RoundDown(Box<CompiledLogic>, Option<Box<CompiledLogic>>), Ceiling(Box<CompiledLogic>, Option<Box<CompiledLogic>>), Floor(Box<CompiledLogic>, Option<Box<CompiledLogic>>), Trunc(Box<CompiledLogic>, Option<Box<CompiledLogic>>), Mround(Box<CompiledLogic>, Box<CompiledLogic>), Length(Box<CompiledLogic>), Search(Box<CompiledLogic>, Box<CompiledLogic>, Option<Box<CompiledLogic>>), Left(Box<CompiledLogic>, Option<Box<CompiledLogic>>), Right(Box<CompiledLogic>, Option<Box<CompiledLogic>>), Mid(Box<CompiledLogic>, Box<CompiledLogic>, Box<CompiledLogic>), Len(Box<CompiledLogic>), SplitText(Box<CompiledLogic>, Box<CompiledLogic>, Option<Box<CompiledLogic>>), Concat(Vec<CompiledLogic>), SplitValue(Box<CompiledLogic>, Box<CompiledLogic>), StringFormat(Box<CompiledLogic>, Option<Box<CompiledLogic>>, Option<Box<CompiledLogic>>, Option<Box<CompiledLogic>>, Option<Box<CompiledLogic>>), Xor(Box<CompiledLogic>, Box<CompiledLogic>), IfNull(Box<CompiledLogic>, Box<CompiledLogic>), IsEmpty(Box<CompiledLogic>), Empty, Today, Now, Days(Box<CompiledLogic>, Box<CompiledLogic>), Year(Box<CompiledLogic>), Month(Box<CompiledLogic>), Day(Box<CompiledLogic>), Date(Box<CompiledLogic>, Box<CompiledLogic>, Box<CompiledLogic>), DateFormat(Box<CompiledLogic>, Option<Box<CompiledLogic>>), Sum(Box<CompiledLogic>, Option<Box<CompiledLogic>>, Option<Box<CompiledLogic>>), For(Box<CompiledLogic>, Box<CompiledLogic>, Box<CompiledLogic>), ValueAt(Box<CompiledLogic>, Box<CompiledLogic>, Option<Box<CompiledLogic>>), MaxAt(Box<CompiledLogic>, Box<CompiledLogic>), IndexAt(Box<CompiledLogic>, Box<CompiledLogic>, Box<CompiledLogic>, Option<Box<CompiledLogic>>), Match(Box<CompiledLogic>, Vec<CompiledLogic>), MatchRange(Box<CompiledLogic>, Vec<CompiledLogic>), Choose(Box<CompiledLogic>, Vec<CompiledLogic>), FindIndex(Box<CompiledLogic>, Vec<CompiledLogic>), Multiplies(Vec<CompiledLogic>), Divides(Vec<CompiledLogic>), YearFrac(Box<CompiledLogic>, Box<CompiledLogic>, Option<Box<CompiledLogic>>), DateDif(Box<CompiledLogic>, Box<CompiledLogic>, Box<CompiledLogic>), RangeOptions(Box<CompiledLogic>, Box<CompiledLogic>), MapOptions(Box<CompiledLogic>, Box<CompiledLogic>, Box<CompiledLogic>), MapOptionsIf(Box<CompiledLogic>, Box<CompiledLogic>, Box<CompiledLogic>, Vec<CompiledLogic>), Return(Box<Value>),
}
Expand description

Compiled JSON Logic expression optimized for fast evaluation

Variants§

§

Null

§

Bool(bool)

§

Number(String)

§

String(String)

§

Array(Vec<CompiledLogic>)

§

Var(String, Option<Box<CompiledLogic>>)

§

Ref(String, Option<Box<CompiledLogic>>)

§

And(Vec<CompiledLogic>)

§

Or(Vec<CompiledLogic>)

§

Not(Box<CompiledLogic>)

§

If(Box<CompiledLogic>, Box<CompiledLogic>, Box<CompiledLogic>)

§

Equal(Box<CompiledLogic>, Box<CompiledLogic>)

§

StrictEqual(Box<CompiledLogic>, Box<CompiledLogic>)

§

NotEqual(Box<CompiledLogic>, Box<CompiledLogic>)

§

StrictNotEqual(Box<CompiledLogic>, Box<CompiledLogic>)

§

LessThan(Box<CompiledLogic>, Box<CompiledLogic>)

§

LessThanOrEqual(Box<CompiledLogic>, Box<CompiledLogic>)

§

GreaterThan(Box<CompiledLogic>, Box<CompiledLogic>)

§

GreaterThanOrEqual(Box<CompiledLogic>, Box<CompiledLogic>)

§

Add(Vec<CompiledLogic>)

§

Subtract(Vec<CompiledLogic>)

§

Multiply(Vec<CompiledLogic>)

§

Divide(Vec<CompiledLogic>)

§

Modulo(Box<CompiledLogic>, Box<CompiledLogic>)

§

Power(Box<CompiledLogic>, Box<CompiledLogic>)

§

Map(Box<CompiledLogic>, Box<CompiledLogic>)

§

Filter(Box<CompiledLogic>, Box<CompiledLogic>)

§

Reduce(Box<CompiledLogic>, Box<CompiledLogic>, Box<CompiledLogic>)

§

All(Box<CompiledLogic>, Box<CompiledLogic>)

§

Some(Box<CompiledLogic>, Box<CompiledLogic>)

§

None(Box<CompiledLogic>, Box<CompiledLogic>)

§

Merge(Vec<CompiledLogic>)

§

In(Box<CompiledLogic>, Box<CompiledLogic>)

§

Cat(Vec<CompiledLogic>)

§

Substr(Box<CompiledLogic>, Box<CompiledLogic>, Option<Box<CompiledLogic>>)

§

Missing(Vec<String>)

§

MissingSome(Box<CompiledLogic>, Vec<String>)

§

Abs(Box<CompiledLogic>)

§

Max(Vec<CompiledLogic>)

§

Min(Vec<CompiledLogic>)

§

Pow(Box<CompiledLogic>, Box<CompiledLogic>)

§

Round(Box<CompiledLogic>, Option<Box<CompiledLogic>>)

§

RoundUp(Box<CompiledLogic>, Option<Box<CompiledLogic>>)

§

RoundDown(Box<CompiledLogic>, Option<Box<CompiledLogic>>)

§

Ceiling(Box<CompiledLogic>, Option<Box<CompiledLogic>>)

§

Floor(Box<CompiledLogic>, Option<Box<CompiledLogic>>)

§

Trunc(Box<CompiledLogic>, Option<Box<CompiledLogic>>)

§

Mround(Box<CompiledLogic>, Box<CompiledLogic>)

§

Length(Box<CompiledLogic>)

§

Search(Box<CompiledLogic>, Box<CompiledLogic>, Option<Box<CompiledLogic>>)

§

Left(Box<CompiledLogic>, Option<Box<CompiledLogic>>)

§

Right(Box<CompiledLogic>, Option<Box<CompiledLogic>>)

§

Mid(Box<CompiledLogic>, Box<CompiledLogic>, Box<CompiledLogic>)

§

Len(Box<CompiledLogic>)

§

SplitText(Box<CompiledLogic>, Box<CompiledLogic>, Option<Box<CompiledLogic>>)

§

Concat(Vec<CompiledLogic>)

§

SplitValue(Box<CompiledLogic>, Box<CompiledLogic>)

§

StringFormat(Box<CompiledLogic>, Option<Box<CompiledLogic>>, Option<Box<CompiledLogic>>, Option<Box<CompiledLogic>>, Option<Box<CompiledLogic>>)

§

Xor(Box<CompiledLogic>, Box<CompiledLogic>)

§

IfNull(Box<CompiledLogic>, Box<CompiledLogic>)

§

IsEmpty(Box<CompiledLogic>)

§

Empty

§

Today

§

Now

§

Days(Box<CompiledLogic>, Box<CompiledLogic>)

§

Year(Box<CompiledLogic>)

§

Month(Box<CompiledLogic>)

§

Day(Box<CompiledLogic>)

§

Date(Box<CompiledLogic>, Box<CompiledLogic>, Box<CompiledLogic>)

§

DateFormat(Box<CompiledLogic>, Option<Box<CompiledLogic>>)

§

Sum(Box<CompiledLogic>, Option<Box<CompiledLogic>>, Option<Box<CompiledLogic>>)

§

For(Box<CompiledLogic>, Box<CompiledLogic>, Box<CompiledLogic>)

§

ValueAt(Box<CompiledLogic>, Box<CompiledLogic>, Option<Box<CompiledLogic>>)

§

MaxAt(Box<CompiledLogic>, Box<CompiledLogic>)

§

IndexAt(Box<CompiledLogic>, Box<CompiledLogic>, Box<CompiledLogic>, Option<Box<CompiledLogic>>)

§

Match(Box<CompiledLogic>, Vec<CompiledLogic>)

§

MatchRange(Box<CompiledLogic>, Vec<CompiledLogic>)

§

Choose(Box<CompiledLogic>, Vec<CompiledLogic>)

§

FindIndex(Box<CompiledLogic>, Vec<CompiledLogic>)

§

Multiplies(Vec<CompiledLogic>)

§

Divides(Vec<CompiledLogic>)

§

YearFrac(Box<CompiledLogic>, Box<CompiledLogic>, Option<Box<CompiledLogic>>)

§

DateDif(Box<CompiledLogic>, Box<CompiledLogic>, Box<CompiledLogic>)

§

RangeOptions(Box<CompiledLogic>, Box<CompiledLogic>)

§

MapOptions(Box<CompiledLogic>, Box<CompiledLogic>, Box<CompiledLogic>)

§

MapOptionsIf(Box<CompiledLogic>, Box<CompiledLogic>, Box<CompiledLogic>, Vec<CompiledLogic>)

§

Return(Box<Value>)

Implementations§

Source§

impl CompiledLogic

Source

pub fn compile(logic: &Value) -> Result<Self, String>

Compile a JSON Logic expression from JSON Value

Source

pub fn is_simple_ref(&self) -> bool

Check if this is a simple reference that doesn’t need caching

Source

pub fn referenced_vars(&self) -> Vec<String>

Extract all variable names referenced in this logic

Source

pub fn has_forward_reference(&self) -> bool

Check if this logic contains forward references (e.g., VALUEAT with $iteration + N where N > 0) Returns true if it references future iterations in a table

Source

pub fn collect_vars(&self, vars: &mut Vec<String>)

Trait Implementations§

Source§

impl Clone for CompiledLogic

Source§

fn clone(&self) -> CompiledLogic

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

impl Debug for CompiledLogic

Source§

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

Formats the value using the given formatter. Read more

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