pub enum Expr<'a, 'f> {
Const(ConstValue),
Ident(Ident<'a, 'f>),
Unary(Spanned<'f, UnaryOp>, Spanned<'f, Box<Expr<'a, 'f>>>),
Binary(Spanned<'f, BinaryOp>, Spanned<'f, Box<Expr<'a, 'f>>>, Spanned<'f, Box<Expr<'a, 'f>>>),
NAry(NAryOp, Spanned<'f, Vec<Spanned<'f, Expr<'a, 'f>>>>),
Slice(Spanned<'f, Box<Expr<'a, 'f>>>, Spanned<'f, Box<Expr<'a, 'f>>>, Spanned<'f, Box<Expr<'a, 'f>>>, Option<Spanned<'f, Box<Expr<'a, 'f>>>>),
Ternary {
op: TernaryOp,
condition: Spanned<'f, Box<Expr<'a, 'f>>>,
then: Spanned<'f, Box<Expr<'a, 'f>>>,
otherwise: Spanned<'f, Box<Expr<'a, 'f>>>,
},
NamedClock(Spanned<'f, ClockExpr<'a, 'f>>),
CallByName(Spanned<'f, Ident<'a, 'f>>, Vec<Spanned<'f, StaticArg<'a, 'f>>>, Vec<Spanned<'f, Expr<'a, 'f>>>),
CreateStruct {
ty_name: Spanned<'f, Ident<'a, 'f>>,
fields: Vec<(Spanned<'f, Ident<'a, 'f>>, Spanned<'f, Expr<'a, 'f>>)>,
base_value: Option<Spanned<'f, Box<Expr<'a, 'f>>>>,
},
Merge(Spanned<'f, Ident<'a, 'f>>, Vec<Spanned<'f, MergeCase<'a, 'f>>>),
CallByPos(Spanned<'f, (Spanned<'f, Ident<'a, 'f>>, Vec<StaticArg<'a, 'f>>)>, Vec<Spanned<'f, Expr<'a, 'f>>>),
}
Expand description
An expression
Variants§
Const(ConstValue)
Constant value
Ident(Ident<'a, 'f>)
Identifier
Unary(Spanned<'f, UnaryOp>, Spanned<'f, Box<Expr<'a, 'f>>>)
Unary operation
Binary(Spanned<'f, BinaryOp>, Spanned<'f, Box<Expr<'a, 'f>>>, Spanned<'f, Box<Expr<'a, 'f>>>)
Binary operation
Tuple Fields
NAry(NAryOp, Spanned<'f, Vec<Spanned<'f, Expr<'a, 'f>>>>)
N-ary operation
Slice(Spanned<'f, Box<Expr<'a, 'f>>>, Spanned<'f, Box<Expr<'a, 'f>>>, Spanned<'f, Box<Expr<'a, 'f>>>, Option<Spanned<'f, Box<Expr<'a, 'f>>>>)
Slice access (tab[x..y]
)
Tuple Fields
Ternary
Ternary expression
Fields
NamedClock(Spanned<'f, ClockExpr<'a, 'f>>)
A clock expression
CallByName(Spanned<'f, Ident<'a, 'f>>, Vec<Spanned<'f, StaticArg<'a, 'f>>>, Vec<Spanned<'f, Expr<'a, 'f>>>)
Node call
Not sure what the difference with Expr::CallByPos
is…
TODO
Tuple Fields
CreateStruct
Structure creation
Fields
Merge(Spanned<'f, Ident<'a, 'f>>, Vec<Spanned<'f, MergeCase<'a, 'f>>>)
Merge operation
Tuple Fields
CallByPos(Spanned<'f, (Spanned<'f, Ident<'a, 'f>>, Vec<StaticArg<'a, 'f>>)>, Vec<Spanned<'f, Expr<'a, 'f>>>)
Node call
Not sure what the difference with Expr::CallByName
is…
TODO
Trait Implementations§
Auto Trait Implementations§
impl<'a, 'f> Freeze for Expr<'a, 'f>
impl<'a, 'f> RefUnwindSafe for Expr<'a, 'f>
impl<'a, 'f> Send for Expr<'a, 'f>
impl<'a, 'f> Sync for Expr<'a, 'f>
impl<'a, 'f> Unpin for Expr<'a, 'f>
impl<'a, 'f> UnwindSafe for Expr<'a, 'f>
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