reth_revm::interpreter::opcode

Struct OpCode

pub struct OpCode(/* private fields */);
Expand description

An EVM opcode.

This is always a valid opcode, as declared in the opcode module or the OPCODE_INFO_JUMPTABLE constant.

Implementations§

§

impl OpCode

pub const fn new(opcode: u8) -> Option<OpCode>

Instantiate a new opcode from a u8.

pub const fn is_jumpdest(&self) -> bool

Returns true if the opcode is a jump destination.

pub const fn is_jumpdest_by_op(opcode: u8) -> bool

Takes a u8 and returns true if it is a jump destination.

pub const fn is_jump(self) -> bool

Returns true if the opcode is a legacy jump instruction.

pub const fn is_jump_by_op(opcode: u8) -> bool

Takes a u8 and returns true if it is a jump instruction.

pub const fn is_push(self) -> bool

Returns true if the opcode is a PUSH instruction.

pub fn is_push_by_op(opcode: u8) -> bool

Takes a u8 and returns true if it is a push instruction.

pub unsafe fn new_unchecked(opcode: u8) -> OpCode

Instantiate a new opcode from a u8 without checking if it is valid.

§Safety

All code using Opcode values assume that they are valid opcodes, so providing an invalid opcode may cause undefined behavior.

pub const fn as_str(self) -> &'static str

Returns the opcode as a string. This is the inverse of parse.

pub const fn name_by_op(opcode: u8) -> &'static str

Returns the opcode name.

pub const fn inputs(&self) -> u8

Returns the number of input stack elements.

pub const fn outputs(&self) -> u8

Returns the number of output stack elements.

pub const fn io_diff(&self) -> i16

Calculates the difference between the number of input and output stack elements.

pub const fn info_by_op(opcode: u8) -> Option<OpCodeInfo>

Returns the opcode information for the given opcode.

pub const fn info(&self) -> OpCodeInfo

Returns the opcode information.

pub const fn input_output(&self) -> (u8, u8)

Returns the number of both input and output stack elements.

Can be slightly faster that calling inputs and outputs separately.

pub const fn get(self) -> u8

Returns the opcode as a u8.

pub const fn modifies_memory(&self) -> bool

§

impl OpCode

pub const STOP: OpCode

The 0x00 (“STOP”) opcode.

pub const ADD: OpCode

The 0x01 (“ADD”) opcode.

pub const MUL: OpCode

The 0x02 (“MUL”) opcode.

pub const SUB: OpCode

The 0x03 (“SUB”) opcode.

pub const DIV: OpCode

The 0x04 (“DIV”) opcode.

pub const SDIV: OpCode

The 0x05 (“SDIV”) opcode.

pub const MOD: OpCode

The 0x06 (“MOD”) opcode.

pub const SMOD: OpCode

The 0x07 (“SMOD”) opcode.

pub const ADDMOD: OpCode

The 0x08 (“ADDMOD”) opcode.

pub const MULMOD: OpCode

The 0x09 (“MULMOD”) opcode.

pub const EXP: OpCode

The 0x0A (“EXP”) opcode.

pub const SIGNEXTEND: OpCode

The 0x0B (“SIGNEXTEND”) opcode.

pub const LT: OpCode

The 0x10 (“LT”) opcode.

pub const GT: OpCode

The 0x11 (“GT”) opcode.

pub const SLT: OpCode

The 0x12 (“SLT”) opcode.

pub const SGT: OpCode

The 0x13 (“SGT”) opcode.

pub const EQ: OpCode

The 0x14 (“EQ”) opcode.

pub const ISZERO: OpCode

The 0x15 (“ISZERO”) opcode.

pub const AND: OpCode

The 0x16 (“AND”) opcode.

pub const OR: OpCode

The 0x17 (“OR”) opcode.

pub const XOR: OpCode

The 0x18 (“XOR”) opcode.

pub const NOT: OpCode

The 0x19 (“NOT”) opcode.

pub const BYTE: OpCode

The 0x1A (“BYTE”) opcode.

pub const SHL: OpCode

The 0x1B (“SHL”) opcode.

pub const SHR: OpCode

The 0x1C (“SHR”) opcode.

pub const SAR: OpCode

The 0x1D (“SAR”) opcode.

pub const KECCAK256: OpCode

The 0x20 (“KECCAK256”) opcode.

pub const ADDRESS: OpCode

The 0x30 (“ADDRESS”) opcode.

pub const BALANCE: OpCode

The 0x31 (“BALANCE”) opcode.

pub const ORIGIN: OpCode

The 0x32 (“ORIGIN”) opcode.

pub const CALLER: OpCode

The 0x33 (“CALLER”) opcode.

pub const CALLVALUE: OpCode

The 0x34 (“CALLVALUE”) opcode.

pub const CALLDATALOAD: OpCode

The 0x35 (“CALLDATALOAD”) opcode.

pub const CALLDATASIZE: OpCode

The 0x36 (“CALLDATASIZE”) opcode.

pub const CALLDATACOPY: OpCode

The 0x37 (“CALLDATACOPY”) opcode.

pub const CODESIZE: OpCode

The 0x38 (“CODESIZE”) opcode.

pub const CODECOPY: OpCode

The 0x39 (“CODECOPY”) opcode.

pub const GASPRICE: OpCode

The 0x3A (“GASPRICE”) opcode.

pub const EXTCODESIZE: OpCode

The 0x3B (“EXTCODESIZE”) opcode.

pub const EXTCODECOPY: OpCode

The 0x3C (“EXTCODECOPY”) opcode.

pub const RETURNDATASIZE: OpCode

The 0x3D (“RETURNDATASIZE”) opcode.

pub const RETURNDATACOPY: OpCode

The 0x3E (“RETURNDATACOPY”) opcode.

pub const EXTCODEHASH: OpCode

The 0x3F (“EXTCODEHASH”) opcode.

pub const BLOCKHASH: OpCode

The 0x40 (“BLOCKHASH”) opcode.

pub const COINBASE: OpCode

The 0x41 (“COINBASE”) opcode.

pub const TIMESTAMP: OpCode

The 0x42 (“TIMESTAMP”) opcode.

pub const NUMBER: OpCode

The 0x43 (“NUMBER”) opcode.

pub const DIFFICULTY: OpCode

The 0x44 (“DIFFICULTY”) opcode.

pub const GASLIMIT: OpCode

The 0x45 (“GASLIMIT”) opcode.

pub const CHAINID: OpCode

The 0x46 (“CHAINID”) opcode.

pub const SELFBALANCE: OpCode

The 0x47 (“SELFBALANCE”) opcode.

pub const BASEFEE: OpCode

The 0x48 (“BASEFEE”) opcode.

pub const BLOBHASH: OpCode

The 0x49 (“BLOBHASH”) opcode.

pub const BLOBBASEFEE: OpCode

The 0x4A (“BLOBBASEFEE”) opcode.

pub const POP: OpCode

The 0x50 (“POP”) opcode.

pub const MLOAD: OpCode

The 0x51 (“MLOAD”) opcode.

pub const MSTORE: OpCode

The 0x52 (“MSTORE”) opcode.

pub const MSTORE8: OpCode

The 0x53 (“MSTORE8”) opcode.

pub const SLOAD: OpCode

The 0x54 (“SLOAD”) opcode.

pub const SSTORE: OpCode

The 0x55 (“SSTORE”) opcode.

pub const JUMP: OpCode

The 0x56 (“JUMP”) opcode.

pub const JUMPI: OpCode

The 0x57 (“JUMPI”) opcode.

pub const PC: OpCode

The 0x58 (“PC”) opcode.

pub const MSIZE: OpCode

The 0x59 (“MSIZE”) opcode.

pub const GAS: OpCode

The 0x5A (“GAS”) opcode.

pub const JUMPDEST: OpCode

The 0x5B (“JUMPDEST”) opcode.

pub const TLOAD: OpCode

The 0x5C (“TLOAD”) opcode.

pub const TSTORE: OpCode

The 0x5D (“TSTORE”) opcode.

pub const MCOPY: OpCode

The 0x5E (“MCOPY”) opcode.

pub const PUSH0: OpCode

The 0x5F (“PUSH0”) opcode.

pub const PUSH1: OpCode

The 0x60 (“PUSH1”) opcode.

pub const PUSH2: OpCode

The 0x61 (“PUSH2”) opcode.

pub const PUSH3: OpCode

The 0x62 (“PUSH3”) opcode.

pub const PUSH4: OpCode

The 0x63 (“PUSH4”) opcode.

pub const PUSH5: OpCode

The 0x64 (“PUSH5”) opcode.

pub const PUSH6: OpCode

The 0x65 (“PUSH6”) opcode.

pub const PUSH7: OpCode

The 0x66 (“PUSH7”) opcode.

pub const PUSH8: OpCode

The 0x67 (“PUSH8”) opcode.

pub const PUSH9: OpCode

The 0x68 (“PUSH9”) opcode.

pub const PUSH10: OpCode

The 0x69 (“PUSH10”) opcode.

pub const PUSH11: OpCode

The 0x6A (“PUSH11”) opcode.

pub const PUSH12: OpCode

The 0x6B (“PUSH12”) opcode.

pub const PUSH13: OpCode

The 0x6C (“PUSH13”) opcode.

pub const PUSH14: OpCode

The 0x6D (“PUSH14”) opcode.

pub const PUSH15: OpCode

The 0x6E (“PUSH15”) opcode.

pub const PUSH16: OpCode

The 0x6F (“PUSH16”) opcode.

pub const PUSH17: OpCode

The 0x70 (“PUSH17”) opcode.

pub const PUSH18: OpCode

The 0x71 (“PUSH18”) opcode.

pub const PUSH19: OpCode

The 0x72 (“PUSH19”) opcode.

pub const PUSH20: OpCode

The 0x73 (“PUSH20”) opcode.

pub const PUSH21: OpCode

The 0x74 (“PUSH21”) opcode.

pub const PUSH22: OpCode

The 0x75 (“PUSH22”) opcode.

pub const PUSH23: OpCode

The 0x76 (“PUSH23”) opcode.

pub const PUSH24: OpCode

The 0x77 (“PUSH24”) opcode.

pub const PUSH25: OpCode

The 0x78 (“PUSH25”) opcode.

pub const PUSH26: OpCode

The 0x79 (“PUSH26”) opcode.

pub const PUSH27: OpCode

The 0x7A (“PUSH27”) opcode.

pub const PUSH28: OpCode

The 0x7B (“PUSH28”) opcode.

pub const PUSH29: OpCode

The 0x7C (“PUSH29”) opcode.

pub const PUSH30: OpCode

The 0x7D (“PUSH30”) opcode.

pub const PUSH31: OpCode

The 0x7E (“PUSH31”) opcode.

pub const PUSH32: OpCode

The 0x7F (“PUSH32”) opcode.

pub const DUP1: OpCode

The 0x80 (“DUP1”) opcode.

pub const DUP2: OpCode

The 0x81 (“DUP2”) opcode.

pub const DUP3: OpCode

The 0x82 (“DUP3”) opcode.

pub const DUP4: OpCode

The 0x83 (“DUP4”) opcode.

pub const DUP5: OpCode

The 0x84 (“DUP5”) opcode.

pub const DUP6: OpCode

The 0x85 (“DUP6”) opcode.

pub const DUP7: OpCode

The 0x86 (“DUP7”) opcode.

pub const DUP8: OpCode

The 0x87 (“DUP8”) opcode.

pub const DUP9: OpCode

The 0x88 (“DUP9”) opcode.

pub const DUP10: OpCode

The 0x89 (“DUP10”) opcode.

pub const DUP11: OpCode

The 0x8A (“DUP11”) opcode.

pub const DUP12: OpCode

The 0x8B (“DUP12”) opcode.

pub const DUP13: OpCode

The 0x8C (“DUP13”) opcode.

pub const DUP14: OpCode

The 0x8D (“DUP14”) opcode.

pub const DUP15: OpCode

The 0x8E (“DUP15”) opcode.

pub const DUP16: OpCode

The 0x8F (“DUP16”) opcode.

pub const SWAP1: OpCode

The 0x90 (“SWAP1”) opcode.

pub const SWAP2: OpCode

The 0x91 (“SWAP2”) opcode.

pub const SWAP3: OpCode

The 0x92 (“SWAP3”) opcode.

pub const SWAP4: OpCode

The 0x93 (“SWAP4”) opcode.

pub const SWAP5: OpCode

The 0x94 (“SWAP5”) opcode.

pub const SWAP6: OpCode

The 0x95 (“SWAP6”) opcode.

pub const SWAP7: OpCode

The 0x96 (“SWAP7”) opcode.

pub const SWAP8: OpCode

The 0x97 (“SWAP8”) opcode.

pub const SWAP9: OpCode

The 0x98 (“SWAP9”) opcode.

pub const SWAP10: OpCode

The 0x99 (“SWAP10”) opcode.

pub const SWAP11: OpCode

The 0x9A (“SWAP11”) opcode.

pub const SWAP12: OpCode

The 0x9B (“SWAP12”) opcode.

pub const SWAP13: OpCode

The 0x9C (“SWAP13”) opcode.

pub const SWAP14: OpCode

The 0x9D (“SWAP14”) opcode.

pub const SWAP15: OpCode

The 0x9E (“SWAP15”) opcode.

pub const SWAP16: OpCode

The 0x9F (“SWAP16”) opcode.

pub const LOG0: OpCode

The 0xA0 (“LOG0”) opcode.

pub const LOG1: OpCode

The 0xA1 (“LOG1”) opcode.

pub const LOG2: OpCode

The 0xA2 (“LOG2”) opcode.

pub const LOG3: OpCode

The 0xA3 (“LOG3”) opcode.

pub const LOG4: OpCode

The 0xA4 (“LOG4”) opcode.

pub const DATALOAD: OpCode

The 0xD0 (“DATALOAD”) opcode.

pub const DATALOADN: OpCode

The 0xD1 (“DATALOADN”) opcode.

pub const DATASIZE: OpCode

The 0xD2 (“DATASIZE”) opcode.

pub const DATACOPY: OpCode

The 0xD3 (“DATACOPY”) opcode.

pub const RJUMP: OpCode

The 0xE0 (“RJUMP”) opcode.

pub const RJUMPI: OpCode

The 0xE1 (“RJUMPI”) opcode.

pub const RJUMPV: OpCode

The 0xE2 (“RJUMPV”) opcode.

pub const CALLF: OpCode

The 0xE3 (“CALLF”) opcode.

pub const RETF: OpCode

The 0xE4 (“RETF”) opcode.

pub const JUMPF: OpCode

The 0xE5 (“JUMPF”) opcode.

pub const DUPN: OpCode

The 0xE6 (“DUPN”) opcode.

pub const SWAPN: OpCode

The 0xE7 (“SWAPN”) opcode.

pub const EXCHANGE: OpCode

The 0xE8 (“EXCHANGE”) opcode.

pub const EOFCREATE: OpCode

The 0xEC (“EOFCREATE”) opcode.

pub const RETURNCONTRACT: OpCode

The 0xEE (“RETURNCONTRACT”) opcode.

pub const CREATE: OpCode

The 0xF0 (“CREATE”) opcode.

pub const CALL: OpCode

The 0xF1 (“CALL”) opcode.

pub const CALLCODE: OpCode

The 0xF2 (“CALLCODE”) opcode.

pub const RETURN: OpCode

The 0xF3 (“RETURN”) opcode.

pub const DELEGATECALL: OpCode

The 0xF4 (“DELEGATECALL”) opcode.

pub const CREATE2: OpCode

The 0xF5 (“CREATE2”) opcode.

pub const RETURNDATALOAD: OpCode

The 0xF7 (“RETURNDATALOAD”) opcode.

pub const EXTCALL: OpCode

The 0xF8 (“EXTCALL”) opcode.

pub const EXTDELEGATECALL: OpCode

The 0xF9 (“EXTDELEGATECALL”) opcode.

pub const STATICCALL: OpCode

The 0xFA (“STATICCALL”) opcode.

pub const EXTSTATICCALL: OpCode

The 0xFB (“EXTSTATICCALL”) opcode.

pub const REVERT: OpCode

The 0xFD (“REVERT”) opcode.

pub const INVALID: OpCode

The 0xFE (“INVALID”) opcode.

pub const SELFDESTRUCT: OpCode

The 0xFF (“SELFDESTRUCT”) opcode.

Trait Implementations§

§

impl Clone for OpCode

§

fn clone(&self) -> OpCode

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
§

impl Debug for OpCode

§

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

Formats the value using the given formatter. Read more
§

impl Default for OpCode

§

fn default() -> OpCode

Returns the “default value” for a type. Read more
§

impl Display for OpCode

§

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

Formats the value using the given formatter. Read more
§

impl Hash for OpCode

§

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
§

impl Ord for OpCode

§

fn cmp(&self, other: &OpCode) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
§

impl PartialEq for OpCode

§

fn eq(&self, other: &OpCode) -> 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.
§

impl PartialOrd for OpCode

§

fn partial_cmp(&self, other: &OpCode) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

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

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

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

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

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

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
§

impl Copy for OpCode

§

impl Eq for OpCode

§

impl StructuralPartialEq for OpCode

Auto Trait Implementations§

§

impl Freeze for OpCode

§

impl RefUnwindSafe for OpCode

§

impl Send for OpCode

§

impl Sync for OpCode

§

impl Unpin for OpCode

§

impl UnwindSafe for OpCode

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, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit #126799)
Performs copy-assignment from self to dst. Read more
§

impl<Q, K> Comparable<K> for Q
where Q: Ord + ?Sized, K: Borrow<Q> + ?Sized,

§

fn compare(&self, key: &K) -> Ordering

Compare self to key and return their ordering.
§

impl<T> Conv for T

§

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

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

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

Source§

fn __clone_box(&self, _: Private) -> *mut ()

§

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<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<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, 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

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

Source§

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,

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
§

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

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

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
§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeDebug for T
where T: Debug,

§

impl<T> MaybeSendSync for T

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 1 byte