pub enum OpcodeId {
Show 146 variants STOP, ADD, MUL, SUB, DIV, SDIV, MOD, SMOD, ADDMOD, MULMOD, EXP, SIGNEXTEND, LT, GT, SLT, SGT, EQ, ISZERO, AND, OR, XOR, NOT, BYTE, CALLDATALOAD, CALLDATASIZE, CALLDATACOPY, CODESIZE, CODECOPY, SHL, SHR, SAR, POP, MLOAD, MSTORE, MSTORE8, JUMP, JUMPI, PC, MSIZE, JUMPDEST, PUSH0, PUSH1, PUSH2, PUSH3, PUSH4, PUSH5, PUSH6, PUSH7, PUSH8, PUSH9, PUSH10, PUSH11, PUSH12, PUSH13, PUSH14, PUSH15, PUSH16, PUSH17, PUSH18, PUSH19, PUSH20, PUSH21, PUSH22, PUSH23, PUSH24, PUSH25, PUSH26, PUSH27, PUSH28, PUSH29, PUSH30, PUSH31, PUSH32, DUP1, DUP2, DUP3, DUP4, DUP5, DUP6, DUP7, DUP8, DUP9, DUP10, DUP11, DUP12, DUP13, DUP14, DUP15, DUP16, SWAP1, SWAP2, SWAP3, SWAP4, SWAP5, SWAP6, SWAP7, SWAP8, SWAP9, SWAP10, SWAP11, SWAP12, SWAP13, SWAP14, SWAP15, SWAP16, RETURN, REVERT, INVALID(u8), SHA3, ADDRESS, BALANCE, ORIGIN, CALLER, CALLVALUE, GASPRICE, EXTCODESIZE, EXTCODECOPY, EXTCODEHASH, RETURNDATASIZE, RETURNDATACOPY, BLOCKHASH, COINBASE, TIMESTAMP, NUMBER, DIFFICULTY, GASLIMIT, CHAINID, SELFBALANCE, BASEFEE, SLOAD, SSTORE, GAS, TLOAD, TSTORE, LOG0, LOG1, LOG2, LOG3, LOG4, CREATE, CREATE2, CALL, CALLCODE, DELEGATECALL, STATICCALL, SELFDESTRUCT,
}
Expand description

Opcode enum. One-to-one corresponding to an u8 value.

Variants§

§

STOP

STOP

§

ADD

ADD

§

MUL

MUL

§

SUB

SUB

§

DIV

DIV

§

SDIV

SDIV

§

MOD

MOD

§

SMOD

SMOD

§

ADDMOD

ADDMOD

§

MULMOD

MULMOD

§

EXP

EXP

§

SIGNEXTEND

SIGNEXTEND

§

LT

LT

§

GT

GT

§

SLT

SLT

§

SGT

SGT

§

EQ

EQ

§

ISZERO

ISZERO

§

AND

AND

§

OR

OR

§

XOR

XOR

§

NOT

NOT

§

BYTE

BYTE

§

CALLDATALOAD

CALLDATALOAD

§

CALLDATASIZE

CALLDATASIZE

§

CALLDATACOPY

CALLDATACOPY

§

CODESIZE

CODESIZE

§

CODECOPY

CODECOPY

§

SHL

SHL

§

SHR

SHR

§

SAR

SAR

§

POP

POP

§

MLOAD

MLOAD

§

MSTORE

MSTORE

§

MSTORE8

MSTORE8

§

JUMP

JUMP

§

JUMPI

JUMPI

§

PC

PC

§

MSIZE

MSIZE

§

JUMPDEST

JUMPDEST

§

PUSH0

PUSH0

§

PUSH1

PUSH1

§

PUSH2

PUSH2

§

PUSH3

PUSH3

§

PUSH4

PUSH4

§

PUSH5

PUSH5

§

PUSH6

PUSH6

§

PUSH7

PUSH7

§

PUSH8

PUSH8

§

PUSH9

PUSH9

§

PUSH10

PUSH10

§

PUSH11

PUSH11

§

PUSH12

PUSH12

§

PUSH13

PUSH13

§

PUSH14

PUSH14

§

PUSH15

PUSH15

§

PUSH16

PUSH16

§

PUSH17

PUSH17

§

PUSH18

PUSH18

§

PUSH19

PUSH19

§

PUSH20

PUSH20

§

PUSH21

PUSH21

§

PUSH22

PUSH22

§

PUSH23

PUSH23

§

PUSH24

PUSH24

§

PUSH25

PUSH25

§

PUSH26

PUSH26

§

PUSH27

PUSH27

§

PUSH28

PUSH28

§

PUSH29

PUSH29

§

PUSH30

PUSH30

§

PUSH31

PUSH31

§

PUSH32

PUSH32

§

DUP1

DUP1

§

DUP2

DUP2

§

DUP3

DUP3

§

DUP4

DUP4

§

DUP5

DUP5

§

DUP6

DUP6

§

DUP7

DUP7

§

DUP8

DUP8

§

DUP9

DUP9

§

DUP10

DUP10

§

DUP11

DUP11

§

DUP12

DUP12

§

DUP13

DUP13

§

DUP14

DUP14

§

DUP15

DUP15

§

DUP16

DUP16

§

SWAP1

SWAP1

§

SWAP2

SWAP2

§

SWAP3

SWAP3

§

SWAP4

SWAP4

§

SWAP5

SWAP5

§

SWAP6

SWAP6

§

SWAP7

SWAP7

§

SWAP8

SWAP8

§

SWAP9

SWAP9

§

SWAP10

SWAP10

§

SWAP11

SWAP11

§

SWAP12

SWAP12

§

SWAP13

SWAP13

§

SWAP14

SWAP14

§

SWAP15

SWAP15

§

SWAP16

SWAP16

§

RETURN

RETURN

§

REVERT

REVERT

§

INVALID(u8)

Invalid opcode

§

SHA3

SHA3

§

ADDRESS

ADDRESS

§

BALANCE

BALANCE

§

ORIGIN

ORIGIN

§

CALLER

CALLER

§

CALLVALUE

CALLVALUE

§

GASPRICE

GASPRICE

§

EXTCODESIZE

EXTCODESIZE

§

EXTCODECOPY

EXTCODECOPY

§

EXTCODEHASH

EXTCODEHASH

§

RETURNDATASIZE

RETURNDATASIZE

§

RETURNDATACOPY

RETURNDATACOPY

§

BLOCKHASH

BLOCKHASH

§

COINBASE

COINBASE

§

TIMESTAMP

TIMESTAMP

§

NUMBER

NUMBER

§

DIFFICULTY

DIFFICULTY

§

GASLIMIT

GASLIMIT

§

CHAINID

CHAINID

§

SELFBALANCE

SELFBALANCE

§

BASEFEE

BASEFEE

§

SLOAD

SLOAD

§

SSTORE

SSTORE

§

GAS

GAS

§

TLOAD

TLOAD

§

TSTORE

TSTORE

§

LOG0

LOG0

§

LOG1

LOG1

§

LOG2

LOG2

§

LOG3

LOG3

§

LOG4

LOG4

§

CREATE

CREATE

§

CREATE2

CREATE2

§

CALL

CALL

§

CALLCODE

CALLCODE

§

DELEGATECALL

DELEGATECALL

§

STATICCALL

STATICCALL

§

SELFDESTRUCT

SELFDESTRUCT

Implementations§

source§

impl OpcodeId

source

pub fn is_push(&self) -> bool

Returns true if the OpcodeId is a PUSHn (including PUSH0).

source

pub fn is_push_with_data(&self) -> bool

Returns true if the OpcodeId is a PUSH1 .. PUSH32 (excluding PUSH0).

source

pub fn is_dup(&self) -> bool

Returns true if the OpcodeId is a DUPn.

source

pub fn is_swap(&self) -> bool

Returns true if the OpcodeId is a SWAPn.

source

pub fn is_log(&self) -> bool

Returns true if the OpcodeId is a LOGn.

source

pub fn is_call(&self) -> bool

Returns true if the OpcodeId is a CALL-like.

source

pub fn is_create(&self) -> bool

Returns true if the OpcodeId is a CREATE-like.

source

pub fn is_call_or_create(&self) -> bool

Returns true if the OpcodeId is a CALL or CREATE related .

source§

impl OpcodeId

source

pub const fn as_u8(&self) -> u8

Returns the OpcodeId as a u8.

source

pub const fn as_u64(&self) -> u64

Returns the OpcodeId as a u64.

source

pub const fn constant_gas_cost(&self) -> u64

Returns the constant gas cost of OpcodeId

source

pub fn invalid_stack_ptrs(&self) -> Vec<u32>

Returns invalid stack pointers of OpcodeId

source

pub const fn has_memory_access(&self) -> bool

Returns true if the OpcodeId has memory access

source

pub fn push_n(n: u8) -> Result<OpcodeId, Error>

Returns PUSHn opcode from parameter n.

source

pub fn postfix(&self) -> Option<u8>

If operation has postfix returns it, otherwise None.

source

pub fn data_len(&self) -> usize

Returns number of bytes used by immediate data. This is > 0 only for PUSH1 .. PUSH32 opcodes.

source

pub fn valid_opcodes() -> Vec<OpcodeId>

Returns the all valid opcodes.

source

pub fn invalid_opcodes() -> Vec<OpcodeId>

Returns the all invalid opcodes.

Trait Implementations§

source§

impl Clone for OpcodeId

source§

fn clone(&self) -> OpcodeId

Returns a copy 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 OpcodeId

source§

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

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

impl<'de> Deserialize<'de> for OpcodeId

source§

fn deserialize<D>( deserializer: D ) -> Result<OpcodeId, <D as Deserializer<'de>>::Error>
where D: Deserializer<'de>,

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

impl Display for OpcodeId

source§

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

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

impl<F> Expr<F> for OpcodeId
where F: Field,

source§

fn expr(&self) -> Expression<F>

Returns an expression for the type.
source§

impl From<&OpcodeId> for OogError

source§

fn from(op: &OpcodeId) -> Self

Converts to this type from the input type.
source§

impl From<u8> for OpcodeId

source§

fn from(value: u8) -> OpcodeId

Converts to this type from the input type.
source§

impl FromStr for OpcodeId

§

type Err = Error

The associated error which can be returned from parsing.
source§

fn from_str(s: &str) -> Result<OpcodeId, <OpcodeId as FromStr>::Err>

Parses a string s to return a value of this type. Read more
source§

impl Hash for OpcodeId

source§

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

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 IntoEnumIterator for OpcodeId

source§

impl PartialEq for OpcodeId

source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<F> Scalar<F> for OpcodeId
where F: Field,

source§

fn scalar(&self) -> F

Returns a scalar for the type.
source§

impl Serialize for OpcodeId

source§

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

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

impl TryFrom<OpcodeId> for CallKind

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(op: OpcodeId) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl Copy for OpcodeId

source§

impl Eq for OpcodeId

source§

impl StructuralPartialEq for OpcodeId

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
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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.

§

impl<T> Pipe for T
where T: ?Sized,

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
§

impl<T> Tap for T

§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
source§

impl<T> ToOwned for T
where T: Clone,

§

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§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

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>,

§

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

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

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

§

impl<T> JsonSchemaMaybe for T

§

impl<T> SyncDeps for T