Skip to main content

BuiltinOp

Enum BuiltinOp 

Source
pub enum BuiltinOp {
Show 59 variants Add, Sub, Mul, Div, Mod, Neg, Abs, Floor, Ceil, Round, Eq, Neq, Lt, Lte, Gt, Gte, And, Or, Not, Concat, Len, Slice, Upper, Lower, Trim, Split, Join, Replace, Contains, Map, Filter, Fold, Append, Head, Tail, Reverse, FlatMap, Length, MergeRecords, Keys, Values, HasField, DefaultVal, Clamp, TruncateStr, IntToFloat, FloatToInt, IntToStr, FloatToStr, StrToInt, StrToFloat, TypeOf, IsNull, IsList, Edge, Children, HasEdge, EdgeCount, Anchor,
}
Expand description

Built-in operations, grouped by domain.

Each operation has a fixed arity enforced at evaluation time. All operations are pure — no IO, no mutation, deterministic.

Variants§

§

Add

add(a: int|float, b: int|float) → int|float

§

Sub

sub(a: int|float, b: int|float) → int|float

§

Mul

mul(a: int|float, b: int|float) → int|float

§

Div

div(a: int|float, b: int|float) → int|float (truncating for ints)

§

Mod

mod_(a: int, b: int) → int

§

Neg

neg(a: int|float) → int|float

§

Abs

abs(a: int|float) → int|float

§

Floor

floor(a: float) → int

§

Ceil

ceil(a: float) → int

§

Round

round(a: float) → int (rounds to nearest, ties to even)

§

Eq

eq(a, b) → bool

§

Neq

neq(a, b) → bool

§

Lt

lt(a, b) → bool

§

Lte

lte(a, b) → bool

§

Gt

gt(a, b) → bool

§

Gte

gte(a, b) → bool

§

And

and(a: bool, b: bool) → bool

§

Or

or(a: bool, b: bool) → bool

§

Not

not(a: bool) → bool

§

Concat

concat(a: string, b: string) → string

§

Len

len(s: string) → int (byte length)

§

Slice

slice(s: string, start: int, end: int) → string

§

Upper

upper(s: string) → string

§

Lower

lower(s: string) → string

§

Trim

trim(s: string) → string

§

Split

split(s: string, delim: string) → [string]

§

Join

join(parts: [string], delim: string) → string

§

Replace

replace(s: string, from: string, to: string) → string

§

Contains

contains(s: string, substr: string) → bool

§

Map

map(list: [a], f: a → b) → [b]

§

Filter

filter(list: [a], pred: a → bool) → [a]

§

Fold

fold(list: [a], init: b, f: (b, a) → b) → b

§

Append

append(list: [a], item: a) → [a]

§

Head

head(list: [a]) → a

§

Tail

tail(list: [a]) → [a]

§

Reverse

reverse(list: [a]) → [a]

§

FlatMap

flat_map(list: [a], f: a → [b]) → [b]

§

Length

length(list: [a]) → int (list length, distinct from string Len)

§

MergeRecords

merge(a: record, b: record) → record (b fields override a)

§

Keys

keys(r: record) → [string]

§

Values

values(r: record) → [any]

§

HasField

has_field(r: record, name: string) → bool

§

DefaultVal

default(x, fallback): returns fallback if x is null, else x.

§

Clamp

clamp(x, min, max): clamp a numeric value to the range [min, max].

§

TruncateStr

truncate_str(s, max_len): truncate a string to at most max_len bytes (char-boundary safe).

§

IntToFloat

int_to_float(n: int) → float

§

FloatToInt

float_to_int(f: float) → int (truncates)

§

IntToStr

int_to_str(n: int) → string

§

FloatToStr

float_to_str(f: float) → string

§

StrToInt

str_to_int(s: string) → int (fails on non-numeric)

§

StrToFloat

str_to_float(s: string) → float (fails on non-numeric)

§

TypeOf

type_of(v) → string (returns type name)

§

IsNull

is_null(v) → bool

§

IsList

is_list(v) → bool

§

Edge

edge(node_ref: string, edge_kind: string) → value Follow a named edge from a node in the instance tree.

§

Children

children(node_ref: string) → [value] Get all children of a node in the instance tree.

§

HasEdge

has_edge(node_ref: string, edge_kind: string) → bool Check if a node has a specific outgoing edge.

§

EdgeCount

edge_count(node_ref: string) → int Count outgoing edges from a node.

§

Anchor

anchor(node_ref: string) → string Get the schema anchor (sort/kind) of a node.

Implementations§

Source§

impl BuiltinOp

Source

pub const fn arity(self) -> usize

Returns the expected number of arguments for this builtin.

Source

pub const fn signature(self) -> Option<(&'static [ExprType], ExprType)>

Returns the type signature (input_types, output_type) for builtins with a known, monomorphic signature. Polymorphic builtins (e.g., Add works on both int and float) return None.

Trait Implementations§

Source§

impl Clone for BuiltinOp

Source§

fn clone(&self) -> BuiltinOp

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 BuiltinOp

Source§

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

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

impl<'de> Deserialize<'de> for BuiltinOp

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Hash for BuiltinOp

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for BuiltinOp

Source§

fn eq(&self, other: &BuiltinOp) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for BuiltinOp

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Copy for BuiltinOp

Source§

impl Eq for BuiltinOp

Source§

impl StructuralPartialEq for BuiltinOp

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

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,