pub enum Expr {
Literal(Span, Value),
Variable(Span, usize, Vec<String>),
UnaryOp(Span, Span, UnaryOp, Box<Expr>),
BinaryOp(Span, Span, BinaryOp, Box<Expr>, Box<Expr>),
TernaryOp(Span, Box<Expr>, Box<Expr>, Box<Expr>),
Slice(Span, Span, Box<Expr>, Box<Expr>, Box<Expr>),
SliceShort(Span, Span, Box<Expr>, Box<Expr>),
Block(Span, Vec<Expr>),
Call(Span, Box<Expr>, Vec<Expr>),
Asm(Span, AstTopLevel),
}
Variants§
Literal(Span, Value)
Variable(Span, usize, Vec<String>)
UnaryOp(Span, Span, UnaryOp, Box<Expr>)
BinaryOp(Span, Span, BinaryOp, Box<Expr>, Box<Expr>)
TernaryOp(Span, Box<Expr>, Box<Expr>, Box<Expr>)
Slice(Span, Span, Box<Expr>, Box<Expr>, Box<Expr>)
SliceShort(Span, Span, Box<Expr>, Box<Expr>)
Block(Span, Vec<Expr>)
Call(Span, Box<Expr>, Vec<Expr>)
Asm(Span, AstTopLevel)
Implementations§
source§impl Expr
impl Expr
pub fn get_static_size( &self, provider: &StaticallyKnownProvider<'_> ) -> Option<usize>
pub fn is_value_statically_known( &self, provider: &StaticallyKnownProvider<'_> ) -> bool
pub fn returned_value_span(&self) -> Span
source§impl Expr
impl Expr
pub fn try_eval_usize<'provider>(&self) -> Option<usize>
pub fn eval_nonzero_usize<'provider>( &self, report: &mut Report, provider: EvalProvider<'provider> ) -> Result<usize, ()>
pub fn eval_bigint<'provider>( &self, report: &mut Report, provider: EvalProvider<'provider> ) -> Result<BigInt, ()>
pub fn eval<'provider>( &self, report: &mut Report, provider: EvalProvider<'provider> ) -> Result<Value, ()>
pub fn eval_with_ctx<'provider>( &self, report: &mut Report, ctx: &mut EvalContext, provider: EvalProvider<'provider> ) -> Result<Value, ()>
Trait Implementations§
Auto Trait Implementations§
impl RefUnwindSafe for Expr
impl !Send for Expr
impl !Sync for Expr
impl Unpin for Expr
impl UnwindSafe for Expr
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