pub enum ExprSpec {
Show 65 variants
Lit(i64),
Float(f64),
FloatOp {
op: BinOp,
lhs: Box<ExprSpec>,
rhs: Box<ExprSpec>,
},
IntToFloat(Box<ExprSpec>),
FloatToInt(Box<ExprSpec>),
Decimal(f64),
DecimalOp {
op: BinOp,
lhs: Box<ExprSpec>,
rhs: Box<ExprSpec>,
},
IntToDecimal(Box<ExprSpec>),
DecimalToInt(Box<ExprSpec>),
DecimalRaw(Box<ExprSpec>),
Bool(bool),
Not(Box<ExprSpec>),
Str(String),
StrLen(Box<ExprSpec>),
StrLower(Box<ExprSpec>),
StrFromCode(Box<ExprSpec>),
NumberToStr(Box<ExprSpec>),
StrToNumber(Box<ExprSpec>),
StrToNumberOpt(Box<ExprSpec>),
StrConcat(Box<ExprSpec>, Box<ExprSpec>),
StrSlice {
s: Box<ExprSpec>,
start: Box<ExprSpec>,
len: Box<ExprSpec>,
},
StrEq(Box<ExprSpec>, Box<ExprSpec>),
StrContains {
haystack: Box<ExprSpec>,
needle: Box<ExprSpec>,
},
StrStartsWith {
s: Box<ExprSpec>,
prefix: Box<ExprSpec>,
},
StrIndexOf {
haystack: Box<ExprSpec>,
needle: Box<ExprSpec>,
},
Now,
List(Vec<ExprSpec>),
ListEmpty {
elem: Type,
},
ListCons {
head: Box<ExprSpec>,
tail: Box<ExprSpec>,
},
OptionSome(Box<ExprSpec>),
OptionNone {
elem: Type,
},
OptionElse {
opt: Box<ExprSpec>,
default: Box<ExprSpec>,
},
OptionMatch {
opt: Box<ExprSpec>,
some_bind: String,
some_body: Box<ExprSpec>,
none_body: Box<ExprSpec>,
},
ListTryGet {
list: Box<ExprSpec>,
index: Box<ExprSpec>,
},
ListLen(Box<ExprSpec>),
ListGet {
list: Box<ExprSpec>,
index: Box<ExprSpec>,
},
Map(Vec<(ExprSpec, ExprSpec)>),
MapGet {
map: Box<ExprSpec>,
key: Box<ExprSpec>,
},
MapTryGet {
map: Box<ExprSpec>,
key: Box<ExprSpec>,
},
MapLen(Box<ExprSpec>),
Log(Box<ExprSpec>),
Publish(Box<ExprSpec>),
SetHeader {
name: Box<ExprSpec>,
value: Box<ExprSpec>,
},
Rand,
MutNew(Box<ExprSpec>),
MutGet(Box<ExprSpec>),
MutSet {
cell: Box<ExprSpec>,
value: Box<ExprSpec>,
},
DiskWrite {
path: Box<ExprSpec>,
content: Box<ExprSpec>,
},
DiskRead(Box<ExprSpec>),
NetGet(Box<ExprSpec>),
DbQuery {
sql: Box<ExprSpec>,
params: Box<ExprSpec>,
},
Ref(String),
Call {
func: String,
args: Vec<ExprSpec>,
},
FuncRef(String),
CallValue {
callee: Box<ExprSpec>,
args: Vec<ExprSpec>,
},
Lambda {
params: Vec<(String, Type)>,
body: Box<ExprSpec>,
},
BinOp {
op: BinOp,
lhs: Box<ExprSpec>,
rhs: Box<ExprSpec>,
},
If {
cond: Box<ExprSpec>,
then_branch: Box<ExprSpec>,
else_branch: Box<ExprSpec>,
},
Fail(String),
Handle {
body: Box<ExprSpec>,
handlers: Vec<(String, ExprSpec)>,
},
Record {
type_name: String,
fields: Vec<(String, ExprSpec)>,
},
Field {
base: Box<ExprSpec>,
type_name: String,
field: String,
},
Variant {
type_name: String,
case: String,
fields: Vec<(String, ExprSpec)>,
},
Match {
scrutinee: Box<ExprSpec>,
type_name: String,
arms: Vec<(String, Vec<String>, ExprSpec)>,
},
Hole {
expects: String,
},
}Expand description
A structural expression an agent supplies to add_step / set_yield. It
mirrors the seed expression model; the editor materializes it into
content-addressed nodes at commit.
Variants§
Lit(i64)
Float(f64)
A Float literal (stored in the node as its bit pattern).
FloatOp
IntToFloat(Box<ExprSpec>)
FloatToInt(Box<ExprSpec>)
Decimal(f64)
A Decimal literal, given as its real value; stored pre-scaled by
10_000 and rounded to 4 fractional digits.
DecimalOp
IntToDecimal(Box<ExprSpec>)
DecimalToInt(Box<ExprSpec>)
DecimalRaw(Box<ExprSpec>)
Bool(bool)
Not(Box<ExprSpec>)
Str(String)
StrLen(Box<ExprSpec>)
StrLower(Box<ExprSpec>)
StrFromCode(Box<ExprSpec>)
NumberToStr(Box<ExprSpec>)
StrToNumber(Box<ExprSpec>)
StrToNumberOpt(Box<ExprSpec>)
StrConcat(Box<ExprSpec>, Box<ExprSpec>)
StrSlice
StrEq(Box<ExprSpec>, Box<ExprSpec>)
StrContains
StrStartsWith
StrIndexOf
Now
List(Vec<ExprSpec>)
ListEmpty
ListCons
OptionSome(Box<ExprSpec>)
OptionNone
OptionElse
OptionMatch
ListTryGet
ListLen(Box<ExprSpec>)
ListGet
Map(Vec<(ExprSpec, ExprSpec)>)
MapGet
MapTryGet
MapLen(Box<ExprSpec>)
Log(Box<ExprSpec>)
Publish(Box<ExprSpec>)
SetHeader
Rand
MutNew(Box<ExprSpec>)
MutGet(Box<ExprSpec>)
MutSet
DiskWrite
DiskRead(Box<ExprSpec>)
NetGet(Box<ExprSpec>)
DbQuery
Ref(String)
Call
FuncRef(String)
CallValue
Lambda
An anonymous closure. Param min-confidence is External (weakest):
a closure does not gate its caller’s confidence.
BinOp
If
Fail(String)
Handle
Record
Field
Variant
Match
Fields
Hole
Trait Implementations§
Source§impl<'de> Deserialize<'de> for ExprSpec
impl<'de> Deserialize<'de> for ExprSpec
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for ExprSpec
impl RefUnwindSafe for ExprSpec
impl Send for ExprSpec
impl Sync for ExprSpec
impl Unpin for ExprSpec
impl UnsafeUnpin for ExprSpec
impl UnwindSafe for ExprSpec
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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