Skip to main content

SolidityExpr

Enum SolidityExpr 

Source
pub enum SolidityExpr {
Show 36 variants IntLit(i128), BoolLit(bool), StrLit(String), AddressLit(String), HexLit(String), Var(String), This, MsgSender, MsgValue, MsgData, BlockTimestamp, BlockNumber, BlockBasefee, TxOrigin, GasLeft, FieldAccess(Box<SolidityExpr>, String), Index(Box<SolidityExpr>, Box<SolidityExpr>), Call(Box<SolidityExpr>, Vec<SolidityExpr>), NamedCall(Box<SolidityExpr>, Vec<(String, SolidityExpr)>), Cast(SolidityType, Box<SolidityExpr>), AbiEncode(Vec<SolidityExpr>), AbiEncodePacked(Vec<SolidityExpr>), AbiEncodeWithSelector(Box<SolidityExpr>, Vec<SolidityExpr>), Keccak256(Box<SolidityExpr>), Sha256(Box<SolidityExpr>), Ecrecover(Box<SolidityExpr>, Box<SolidityExpr>, Box<SolidityExpr>, Box<SolidityExpr>), BinOp(String, Box<SolidityExpr>, Box<SolidityExpr>), UnaryOp(String, Box<SolidityExpr>), Ternary(Box<SolidityExpr>, Box<SolidityExpr>, Box<SolidityExpr>), New(SolidityType, Vec<SolidityExpr>), Delete(Box<SolidityExpr>), ArrayLit(Vec<SolidityExpr>), TupleLit(Vec<SolidityExpr>), TypeMax(SolidityType), TypeMin(SolidityType), Payable(Box<SolidityExpr>),
}
Expand description

Solidity expression AST node.

Variants§

§

IntLit(i128)

Integer literal: 42

§

BoolLit(bool)

Boolean literal: true / false

§

StrLit(String)

String literal: "hello"

§

AddressLit(String)

Address literal: 0x1234...

§

HexLit(String)

Hex literal: 0xdeadbeef

§

Var(String)

Variable reference: myVar

§

This

this

§

MsgSender

msg.sender

§

MsgValue

msg.value

§

MsgData

msg.data

§

BlockTimestamp

block.timestamp

§

BlockNumber

block.number

§

BlockBasefee

block.basefee

§

TxOrigin

tx.origin

§

GasLeft

gasleft()

§

FieldAccess(Box<SolidityExpr>, String)

Field access: expr.field

§

Index(Box<SolidityExpr>, Box<SolidityExpr>)

Index access: expr[index]

§

Call(Box<SolidityExpr>, Vec<SolidityExpr>)

Function call: f(args...)

§

NamedCall(Box<SolidityExpr>, Vec<(String, SolidityExpr)>)

Named argument call: f({name: val, ...})

§

Cast(SolidityType, Box<SolidityExpr>)

Type cast: uint256(expr)

§

AbiEncode(Vec<SolidityExpr>)

abi.encode(args...)

§

AbiEncodePacked(Vec<SolidityExpr>)

abi.encodePacked(args...)

§

AbiEncodeWithSelector(Box<SolidityExpr>, Vec<SolidityExpr>)

abi.encodeWithSelector(selector, args...)

§

Keccak256(Box<SolidityExpr>)

keccak256(data)

§

Sha256(Box<SolidityExpr>)

sha256(data)

§

Ecrecover(Box<SolidityExpr>, Box<SolidityExpr>, Box<SolidityExpr>, Box<SolidityExpr>)

ecrecover(hash, v, r, s)

§

BinOp(String, Box<SolidityExpr>, Box<SolidityExpr>)

Binary operation: a + b

§

UnaryOp(String, Box<SolidityExpr>)

Unary operation: !a, -a, ~a

§

Ternary(Box<SolidityExpr>, Box<SolidityExpr>, Box<SolidityExpr>)

Ternary: cond ? then_ : else_

§

New(SolidityType, Vec<SolidityExpr>)

new T(args...)

§

Delete(Box<SolidityExpr>)

delete expr

§

ArrayLit(Vec<SolidityExpr>)

Array literal: [a, b, c]

§

TupleLit(Vec<SolidityExpr>)

Tuple literal: (a, b, c)

§

TypeMax(SolidityType)

type(T).max / type(T).min

§

TypeMin(SolidityType)

§

Payable(Box<SolidityExpr>)

payable(addr)

Trait Implementations§

Source§

impl Clone for SolidityExpr

Source§

fn clone(&self) -> SolidityExpr

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 SolidityExpr

Source§

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

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

impl Display for SolidityExpr

Source§

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

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

impl PartialEq for SolidityExpr

Source§

fn eq(&self, other: &SolidityExpr) -> 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 StructuralPartialEq for SolidityExpr

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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. 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.