forge::revm::interpreter::opcode

Struct OpCode

#[repr(transparent)]
pub struct OpCode(u8);
Expand description

An EVM opcode.

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

Tuple Fields§

§0: u8

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
§

impl<T> AsOut<T> for T
where T: Copy,

§

fn as_out(&mut self) -> Out<'_, T>

Returns an out reference to self.
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)
Performs copy-assignment from self to dst. Read more
§

impl<T, R> CollectAndApply<T, R> for T

§

fn collect_and_apply<I, F>(iter: I, f: F) -> R
where I: Iterator<Item = T>, F: FnOnce(&[T]) -> R,

Equivalent to f(&iter.collect::<Vec<_>>()).

§

type Output = R

§

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<Q, K> Comparable<K> for Q
where Q: Ord + ?Sized, K: Borrow<Q> + ?Sized,

§

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

Compares self to key and returns 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,

§

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

Compares self to key and returns 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<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
Source§

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

Source§

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> FromRef<T> for T
where T: Clone,

§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
§

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

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
§

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

§

fn fg(&self, value: Color) -> Painted<&T>

Returns a styled value derived from self with the foreground set to value.

This method should be used rarely. Instead, prefer to use color-specific builder methods like red() and green(), which have the same functionality but are pithier.

§Example

Set foreground color to white using fg():

use yansi::{Paint, Color};

painted.fg(Color::White);

Set foreground color to white using white().

use yansi::Paint;

painted.white();
§

fn primary(&self) -> Painted<&T>

Returns self with the fg() set to [Color::Primary].

§Example
println!("{}", value.primary());
§

fn fixed(&self, color: u8) -> Painted<&T>

Returns self with the fg() set to [Color::Fixed].

§Example
println!("{}", value.fixed(color));
§

fn rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the fg() set to [Color::Rgb].

§Example
println!("{}", value.rgb(r, g, b));
§

fn black(&self) -> Painted<&T>

Returns self with the fg() set to [Color::Black].

§Example
println!("{}", value.black());
§

fn red(&self) -> Painted<&T>

Returns self with the fg() set to [Color::Red].

§Example
println!("{}", value.red());
§

fn green(&self) -> Painted<&T>

Returns self with the fg() set to [Color::Green].

§Example
println!("{}", value.green());
§

fn yellow(&self) -> Painted<&T>

Returns self with the fg() set to [Color::Yellow].

§Example
println!("{}", value.yellow());
§

fn blue(&self) -> Painted<&T>

Returns self with the fg() set to [Color::Blue].

§Example
println!("{}", value.blue());
§

fn magenta(&self) -> Painted<&T>

Returns self with the fg() set to [Color::Magenta].

§Example
println!("{}", value.magenta());
§

fn cyan(&self) -> Painted<&T>

Returns self with the fg() set to [Color::Cyan].

§Example
println!("{}", value.cyan());
§

fn white(&self) -> Painted<&T>

Returns self with the fg() set to [Color::White].

§Example
println!("{}", value.white());
§

fn bright_black(&self) -> Painted<&T>

Returns self with the fg() set to [Color::BrightBlack].

§Example
println!("{}", value.bright_black());
§

fn bright_red(&self) -> Painted<&T>

Returns self with the fg() set to [Color::BrightRed].

§Example
println!("{}", value.bright_red());
§

fn bright_green(&self) -> Painted<&T>

Returns self with the fg() set to [Color::BrightGreen].

§Example
println!("{}", value.bright_green());
§

fn bright_yellow(&self) -> Painted<&T>

Returns self with the fg() set to [Color::BrightYellow].

§Example
println!("{}", value.bright_yellow());
§

fn bright_blue(&self) -> Painted<&T>

Returns self with the fg() set to [Color::BrightBlue].

§Example
println!("{}", value.bright_blue());
§

fn bright_magenta(&self) -> Painted<&T>

Returns self with the fg() set to [Color::BrightMagenta].

§Example
println!("{}", value.bright_magenta());
§

fn bright_cyan(&self) -> Painted<&T>

Returns self with the fg() set to [Color::BrightCyan].

§Example
println!("{}", value.bright_cyan());
§

fn bright_white(&self) -> Painted<&T>

Returns self with the fg() set to [Color::BrightWhite].

§Example
println!("{}", value.bright_white());
§

fn bg(&self, value: Color) -> Painted<&T>

Returns a styled value derived from self with the background set to value.

This method should be used rarely. Instead, prefer to use color-specific builder methods like on_red() and on_green(), which have the same functionality but are pithier.

§Example

Set background color to red using fg():

use yansi::{Paint, Color};

painted.bg(Color::Red);

Set background color to red using on_red().

use yansi::Paint;

painted.on_red();
§

fn on_primary(&self) -> Painted<&T>

Returns self with the bg() set to [Color::Primary].

§Example
println!("{}", value.on_primary());
§

fn on_fixed(&self, color: u8) -> Painted<&T>

Returns self with the bg() set to [Color::Fixed].

§Example
println!("{}", value.on_fixed(color));
§

fn on_rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the bg() set to [Color::Rgb].

§Example
println!("{}", value.on_rgb(r, g, b));
§

fn on_black(&self) -> Painted<&T>

Returns self with the bg() set to [Color::Black].

§Example
println!("{}", value.on_black());
§

fn on_red(&self) -> Painted<&T>

Returns self with the bg() set to [Color::Red].

§Example
println!("{}", value.on_red());
§

fn on_green(&self) -> Painted<&T>

Returns self with the bg() set to [Color::Green].

§Example
println!("{}", value.on_green());
§

fn on_yellow(&self) -> Painted<&T>

Returns self with the bg() set to [Color::Yellow].

§Example
println!("{}", value.on_yellow());
§

fn on_blue(&self) -> Painted<&T>

Returns self with the bg() set to [Color::Blue].

§Example
println!("{}", value.on_blue());
§

fn on_magenta(&self) -> Painted<&T>

Returns self with the bg() set to [Color::Magenta].

§Example
println!("{}", value.on_magenta());
§

fn on_cyan(&self) -> Painted<&T>

Returns self with the bg() set to [Color::Cyan].

§Example
println!("{}", value.on_cyan());
§

fn on_white(&self) -> Painted<&T>

Returns self with the bg() set to [Color::White].

§Example
println!("{}", value.on_white());
§

fn on_bright_black(&self) -> Painted<&T>

Returns self with the bg() set to [Color::BrightBlack].

§Example
println!("{}", value.on_bright_black());
§

fn on_bright_red(&self) -> Painted<&T>

Returns self with the bg() set to [Color::BrightRed].

§Example
println!("{}", value.on_bright_red());
§

fn on_bright_green(&self) -> Painted<&T>

Returns self with the bg() set to [Color::BrightGreen].

§Example
println!("{}", value.on_bright_green());
§

fn on_bright_yellow(&self) -> Painted<&T>

Returns self with the bg() set to [Color::BrightYellow].

§Example
println!("{}", value.on_bright_yellow());
§

fn on_bright_blue(&self) -> Painted<&T>

Returns self with the bg() set to [Color::BrightBlue].

§Example
println!("{}", value.on_bright_blue());
§

fn on_bright_magenta(&self) -> Painted<&T>

Returns self with the bg() set to [Color::BrightMagenta].

§Example
println!("{}", value.on_bright_magenta());
§

fn on_bright_cyan(&self) -> Painted<&T>

Returns self with the bg() set to [Color::BrightCyan].

§Example
println!("{}", value.on_bright_cyan());
§

fn on_bright_white(&self) -> Painted<&T>

Returns self with the bg() set to [Color::BrightWhite].

§Example
println!("{}", value.on_bright_white());
§

fn attr(&self, value: Attribute) -> Painted<&T>

Enables the styling [Attribute] value.

This method should be used rarely. Instead, prefer to use attribute-specific builder methods like bold() and underline(), which have the same functionality but are pithier.

§Example

Make text bold using attr():

use yansi::{Paint, Attribute};

painted.attr(Attribute::Bold);

Make text bold using using bold().

use yansi::Paint;

painted.bold();
§

fn bold(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute::Bold].

§Example
println!("{}", value.bold());
§

fn dim(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute::Dim].

§Example
println!("{}", value.dim());
§

fn italic(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute::Italic].

§Example
println!("{}", value.italic());
§

fn underline(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute::Underline].

§Example
println!("{}", value.underline());

Returns self with the attr() set to [Attribute::Blink].

§Example
println!("{}", value.blink());

Returns self with the attr() set to [Attribute::RapidBlink].

§Example
println!("{}", value.rapid_blink());
§

fn invert(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute::Invert].

§Example
println!("{}", value.invert());
§

fn conceal(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute::Conceal].

§Example
println!("{}", value.conceal());
§

fn strike(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute::Strike].

§Example
println!("{}", value.strike());
§

fn quirk(&self, value: Quirk) -> Painted<&T>

Enables the yansi [Quirk] value.

This method should be used rarely. Instead, prefer to use quirk-specific builder methods like mask() and wrap(), which have the same functionality but are pithier.

§Example

Enable wrapping using .quirk():

use yansi::{Paint, Quirk};

painted.quirk(Quirk::Wrap);

Enable wrapping using wrap().

use yansi::Paint;

painted.wrap();
§

fn mask(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk::Mask].

§Example
println!("{}", value.mask());
§

fn wrap(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk::Wrap].

§Example
println!("{}", value.wrap());
§

fn linger(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk::Linger].

§Example
println!("{}", value.linger());
§

fn clear(&self) -> Painted<&T>

👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear(). The clear() method will be removed in a future release.

Returns self with the quirk() set to [Quirk::Clear].

§Example
println!("{}", value.clear());
§

fn resetting(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk::Resetting].

§Example
println!("{}", value.resetting());
§

fn bright(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk::Bright].

§Example
println!("{}", value.bright());
§

fn on_bright(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk::OnBright].

§Example
println!("{}", value.on_bright());
§

fn whenever(&self, value: Condition) -> Painted<&T>

Conditionally enable styling based on whether the [Condition] value applies. Replaces any previous condition.

See the crate level docs for more details.

§Example

Enable styling painted only when both stdout and stderr are TTYs:

use yansi::{Paint, Condition};

painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);
§

fn new(self) -> Painted<Self>
where Self: Sized,

Create a new [Painted] with a default [Style]. Read more
§

fn paint<S>(&self, style: S) -> Painted<&Self>
where S: Into<Style>,

Apply a style wholesale to self. Any previous style is replaced. 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§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
§

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

§

fn try_clone(&self) -> Result<T, Error>

Clones self, possibly returning an error.
§

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