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
impl CompiledLogic
Sourcepub fn compile(logic: &Value) -> Result<Self, String>
pub fn compile(logic: &Value) -> Result<Self, String>
Compile a JSON Logic expression from JSON Value
Sourcepub fn is_simple_ref(&self) -> bool
pub fn is_simple_ref(&self) -> bool
Check if this is a simple reference that doesn’t need caching
Sourcepub fn referenced_vars(&self) -> Vec<String>
pub fn referenced_vars(&self) -> Vec<String>
Extract all variable names referenced in this logic
Sourcepub fn has_forward_reference(&self) -> bool
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
pub fn collect_vars(&self, vars: &mut Vec<String>)
Trait Implementations§
Source§impl Clone for CompiledLogic
impl Clone for CompiledLogic
Source§fn clone(&self) -> CompiledLogic
fn clone(&self) -> CompiledLogic
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for CompiledLogic
impl RefUnwindSafe for CompiledLogic
impl Send for CompiledLogic
impl Sync for CompiledLogic
impl Unpin for CompiledLogic
impl UnwindSafe for CompiledLogic
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more