pub trait Operation {
type Code: Operation<Code = Self::Code> + Into<u8>;
type ImmediateRef: ?Sized;
type Immediate: Borrow<Self::ImmediateRef> + BorrowMut<Self::ImmediateRef>;
// Required methods
fn immediate(&self) -> Option<&Self::ImmediateRef>;
fn immediate_mut(&mut self) -> Option<&mut Self::ImmediateRef>;
fn into_immediate(self) -> Option<Self::Immediate>;
fn extra_len(&self) -> usize;
fn code(&self) -> Self::Code;
fn mnemonic(&self) -> &str;
fn is_jump(&self) -> bool;
fn is_jump_target(&self) -> bool;
fn is_exit(&self) -> bool;
fn pops(&self) -> usize;
fn pushes(&self) -> usize;
// Provided method
fn code_byte(&self) -> u8 { ... }
}
Expand description
Trait for types that represent an EVM instruction.
Required Associated Types§
sourcetype ImmediateRef: ?Sized
type ImmediateRef: ?Sized
The return root type of Operation::immediate_mut
and
Operation::immediate
.
sourcetype Immediate: Borrow<Self::ImmediateRef> + BorrowMut<Self::ImmediateRef>
type Immediate: Borrow<Self::ImmediateRef> + BorrowMut<Self::ImmediateRef>
The type of the immediate argument for this operation.
Required Methods§
sourcefn immediate(&self) -> Option<&Self::ImmediateRef>
fn immediate(&self) -> Option<&Self::ImmediateRef>
Get a shared reference to the immediate argument of this operation, if one exists.
sourcefn immediate_mut(&mut self) -> Option<&mut Self::ImmediateRef>
fn immediate_mut(&mut self) -> Option<&mut Self::ImmediateRef>
Get a mutable reference to the immediate argument of this operation, if one exists.
sourcefn into_immediate(self) -> Option<Self::Immediate>
fn into_immediate(self) -> Option<Self::Immediate>
Consume this operation and return its immediate argument, if one exists.
sourcefn is_jump(&self) -> bool
fn is_jump(&self) -> bool
Returns true if the current instruction changes the program counter (other than incrementing it.)
sourcefn is_jump_target(&self) -> bool
fn is_jump_target(&self) -> bool
Returns true if the current instruction is a valid destination for jumps.