Skip to main content

EvmOpts

Struct EvmOpts 

Source
pub struct EvmOpts {
Show 32 fields pub env: Env, pub fork_url: Option<String>, pub fork_block_number: Option<u64>, pub fork_state_by_number: bool, pub fork_retries: Option<u32>, pub fork_retry_backoff: Option<u64>, pub fork_headers: Option<Vec<String>>, pub rpc_jwt: Option<String>, pub rpc_headers: Option<Vec<String>>, pub rpc_timeout: Option<u64>, pub rpc_accept_invalid_certs: bool, pub rpc_no_proxy: bool, pub compute_units_per_second: Option<u64>, pub no_rpc_rate_limit: bool, pub no_storage_caching: bool, pub no_fork_bal: bool, pub initial_balance: U256, pub sender: Address, pub ffi: bool, pub always_use_create_2_factory: bool, pub verbosity: u8, pub memory_limit: u64, pub isolate: bool, pub disable_block_gas_limit: bool, pub enable_tx_gas_limit: bool, pub networks: NetworkConfigs, pub create2_deployer: Address, pub fork_endpoint: Option<ForkEndpointIdentity>, pub expected_fork_endpoint: Option<ForkEndpointIdentity>, pub fork_network_is_inferred: bool, pub fork_chain_id_is_inferred: bool, pub fork_block_number_is_inferred: bool,
}
Expand description

EVM execution options, including the configured remote fork.

Fork handling separates two responsibilities. Endpoint discovery identifies and caches the execution family without selecting a block. Exact resolution binds the configured source and selector to a block number, hash, and endpoint context. Forge normally performs discovery before resolution, while callers that already know the network can resolve directly.

Resolution revalidates the endpoint identity around its remote reads. A cached discovery that found no Anvil identity has nothing to revalidate and is reused instead, so the chain ID and the anvil_nodeInfo probe of such an endpoint are requested once, by discovery.

An implicit latest selector remains unchanged in these options; only the returned Fork is pinned to the exact block observed during resolution.

Fields§

§env: Env

The EVM environment configuration.

§fork_url: Option<String>

Fetch state over a remote instead of starting from empty state.

§fork_block_number: Option<u64>

Pins the block number for the state fork.

§fork_state_by_number: bool

Fetch fork state by block number for RPCs that cannot serve it by hash.

§fork_retries: Option<u32>

The number of retries.

§fork_retry_backoff: Option<u64>

Initial retry backoff.

§fork_headers: Option<Vec<String>>

Headers to use with fork_url

§rpc_jwt: Option<String>

JWT secret to use with the configured RPC endpoint.

§rpc_headers: Option<Vec<String>>

Headers to use with the configured RPC endpoint.

§rpc_timeout: Option<u64>

Request timeout to use with the configured RPC endpoint.

§rpc_accept_invalid_certs: bool

Whether to accept invalid certificates from the configured RPC endpoint.

§rpc_no_proxy: bool

Whether to disable automatic proxy detection for the configured RPC endpoint.

§compute_units_per_second: Option<u64>§no_rpc_rate_limit: bool

Disables RPC rate limiting entirely.

§no_storage_caching: bool

Disables storage caching entirely.

§no_fork_bal: bool

Disables parent-block BAL cache prewarming for transaction-hash forks.

§initial_balance: U256

The initial balance of each deployed test contract.

§sender: Address

The address which will be executing all tests.

§ffi: bool

Enables the FFI cheatcode.

§always_use_create_2_factory: bool

Use the create 2 factory in all cases including tests and non-broadcasting scripts.

§verbosity: u8

Verbosity mode of EVM output as number of occurrences.

§memory_limit: u64

The memory limit per EVM execution in bytes. If this limit is exceeded, a MemoryLimitOOG result is thrown.

§isolate: bool

Whether to enable isolation of calls.

§disable_block_gas_limit: bool

Whether to disable block gas limit checks.

§enable_tx_gas_limit: bool

Whether to enable tx gas limit checks as imposed by Osaka (EIP-7825).

§networks: NetworkConfigs

Networks with enabled features.

§create2_deployer: Address

The CREATE2 deployer’s address.

§fork_endpoint: Option<ForkEndpointIdentity>

Most recently discovered endpoint identity, cached for network dispatch and revalidation.

An identity without Anvil metadata also stands in for later identity snapshots of the same endpoint.

§expected_fork_endpoint: Option<ForkEndpointIdentity>

Endpoint identity promoted to an invariant that later discovery must match.

§fork_network_is_inferred: bool

Whether the active network selection was inferred from the fork endpoint.

§fork_chain_id_is_inferred: bool

Whether env.chain_id was inferred from the fork endpoint.

§fork_block_number_is_inferred: bool

Whether fork_block_number was pinned from the fork endpoint’s latest block.

Implementations§

Source§

impl EvmOpts

Source

fn clear_endpoint_derived_fork_state(&mut self)

Clears state derived from a fork endpoint while preserving explicit configuration.

Source

pub fn set_fork_url(&mut self, fork_url: String)

Selects a new fork URL and clears endpoint-derived state from the previous source.

Source

pub fn invalidate_fork_endpoint_if_source_changed( &mut self, fork: &Fork, ) -> bool

Invalidates endpoint-derived state when the effective RPC source changed since fork was resolved.

The effective source consists of the URL, active headers, and JWT. Explicit block, network, and chain-ID selections are retained so the new source is resolved under the same user configuration.

Source

pub fn set_explicit_network(&mut self, network: NetworkVariant)

Applies an explicit network override, replacing any endpoint-inferred selection.

Source

pub fn expect_fork_endpoint( &mut self, identity: ForkEndpointIdentity, network_is_inferred: bool, )

Requires subsequent local fork construction to use this exact endpoint identity.

Source

fn ensure_expected_fork_endpoint( &self, identity: &ForkEndpointIdentity, ) -> Result<()>

Source

fn ensure_inferred_execution_profile( &self, identity: &ForkEndpointIdentity, ) -> Result<()>

Rejects an inferred network whose endpoint now reports a different execution profile.

Source

pub(crate) fn chain_id_override(&self) -> Option<ChainId>

Source

fn endpoint_network_fallback(&self) -> NetworkConfigs

Source

fn anvil_node_info_probe(&self) -> AnvilNodeInfoProbe

Source

fn discovered_non_anvil_chain_id( &self, node_info_probe: AnvilNodeInfoProbe, ) -> Option<ChainId>

Returns the chain ID of the configured endpoint if its cached discovery found no Anvil identity.

Without Anvil node info the identity is derived from the chain ID alone: there is no instance, hardfork, or upstream fork that a reset could change between two reads. Later snapshots of the same endpoint therefore reuse the discovered chain ID instead of requesting eth_chainId and probing anvil_nodeInfo again. An endpoint that node_info_probe or a cached identity identifies as Anvil is never reused and keeps its strict revalidation.

Source

pub(crate) fn fork_source_headers(&self) -> Option<&[String]>

Source

pub async fn pin_fork_block(&mut self) -> Result<Option<BlockNumber>>

Converts an implicit latest selector into a block-number selector in place.

This only reads the endpoint’s current block number; it does not resolve a block hash or endpoint identity and is therefore not a reorg-safe fork snapshot. Create a Backend when preflight and execution must share an exact identity.

Source

pub(crate) async fn prepare_fork(&self) -> Result<Option<Fork>>

Resolves the configured fork source and selector to an exact snapshot without changing self.

Endpoint identity is read before and after the target block and the operation is retried if it changes. The result binds the configured RPC source, configured selector, exact block number and hash, and ForkContext. When the selector is implicit latest, only the returned Fork is pinned.

Source

pub(crate) async fn can_use_create2_deployer_at( &self, fork: Option<&Fork>, ) -> Result<bool>

Returns whether the configured CREATE2 deployer existed at the resolved fork block.

Source

pub(crate) fn provider_for_fork<N: Network>( &self, fork: &Fork, ) -> Result<RootProvider<N>>

Returns a provider configured for an already resolved fork.

Source

pub(crate) async fn check_fork_endpoint<N: Network, P: Provider<N>>( &self, provider: &P, fork: &Fork, ) -> Result<()>

Source

pub(crate) async fn transaction_count_at_fork( &self, account: Address, fork: &Fork, ) -> Result<u64>

Returns an account nonce at the exact block and endpoint identity of fork.

Source

pub fn fork_provider_with_url<N: Network>( &self, fork_url: &str, ) -> Result<RootProvider<N>>

Returns a RootProvider for the given fork URL configured with options in self and annotated Network type.

Source

pub(crate) fn fork_rpc_client(&self, fork_url: &str) -> Result<RpcClient>

Source

pub async fn infer_network_from_fork(&mut self) -> Result<()>

Discovers and caches the network configuration and endpoint identity for a fork.

This is the dispatch phase of fork setup: explicit network selections are preserved, while inferred chain and network settings are applied when no override exists. The method does not resolve or pin a fork block; block resolution happens during backend creation or through Self::env_with_fork_context. Repeated calls only inspect the endpoint again as described by Self::fork_endpoint_identity.

Source

pub async fn discover_fork_endpoint(&self) -> Result<ForkEndpointIdentity>

Discovers a stable identity snapshot without selecting a fork block.

Each attempt reads eth_chainId and the optional Anvil identity methods before and after, and returns only when both snapshots agree. Before Anvil is positively identified, a failed anvil_nodeInfo probe is treated as absence of optional Anvil identity information: the identity then depends on the chain ID alone and is returned from the first snapshot without a confirming one. Later probe failures are strict. This method does not mutate or cache the returned identity in self.

Source

pub async fn fork_endpoint_identity(&self) -> Result<ForkEndpointIdentity>

Returns the identity of the configured fork endpoint, inspecting it only when necessary.

A cached discovery that found no Anvil identity is returned without new requests. Anvil endpoints and endpoints without a cached discovery are inspected through Self::discover_fork_endpoint, so a reset or execution-profile change of an Anvil endpoint is still observed.

Source

async fn resolve_fork_endpoint_once<N: Network, P: Provider<N>>( &self, provider: &P, node_info_probe: &mut AnvilNodeInfoProbe, hardfork_policy: EndpointHardforkPolicy, ) -> Result<ForkEndpointIdentity>

Reads one endpoint identity snapshot without performing a stability check.

The shared node-info probe starts permissive for endpoints that do not expose Anvil methods and becomes strict after Anvil is identified. Callers either bracket mutable remote reads with two snapshots or use this helper to revalidate an already resolved fork. No request is sent for an endpoint whose cached discovery found no Anvil identity.

Source

async fn resolve_fork_endpoint_identity<N: Network, P: Provider<N>>( provider: &P, endpoint: &str, execution_chain_id: ChainId, node_info: Option<NodeInfo>, unknown_fallback: Option<NetworkConfigs>, hardfork_policy: EndpointHardforkPolicy, ) -> Result<ForkEndpointIdentity>

Builds an identity from one observed chain ID and optional Anvil node-info response.

Anvil metadata is consulted only after node info has positively identified the endpoint.

Source

fn non_anvil_fork_endpoint_identity( endpoint: &str, execution_chain_id: ChainId, unknown_fallback: Option<NetworkConfigs>, ) -> Result<ForkEndpointIdentity>

Builds the identity of an endpoint that exposes no Anvil node info from its chain ID.

Source

pub async fn env_with_fork_context<SPEC: Into<SpecId> + Default + Copy, BLOCK: FoundryBlock + Default, TX: FoundryTransaction + Default>( &self, ) -> Result<(EvmEnv<SPEC, BLOCK>, TX, Option<ForkContext>)>

Returns standalone execution environments and the remote source context, if any.

Execution workflows with a backend use its selected block through Backend::env.

Source

pub(crate) async fn env_at_fork<SPEC: Into<SpecId> + Default + Copy, BLOCK: FoundryBlock + Default, TX: FoundryTransaction + Default>( &self, fork: Option<&Fork>, ) -> Result<(EvmEnv<SPEC, BLOCK>, TX)>

Returns the EVM and transaction environments at an already resolved fork.

Source

fn fork_env_error_context(&self) -> String

Source

async fn resolve_fork_block_with_context<N: Network, P: Provider<N>>( &self, provider: &P, target: BlockNumberOrTag, node_info_probe: &mut AnvilNodeInfoProbe, ) -> Result<(N::BlockResponse, BlockNumHash, ForkContext)>

Source

pub(crate) fn fork_env_from_block<SPEC: Into<SpecId> + Default + Copy, BLOCK: FoundryBlock + Default, N: Network>( &self, chain_id: ChainId, source_chain_id: ChainId, block: &N::BlockResponse, ) -> EvmEnv<SPEC, BLOCK>

Source

fn local_evm_env<SPEC: Into<SpecId> + Default + Clone, BLOCK: FoundryBlock + Default>( &self, ) -> EvmEnv<SPEC, BLOCK>

Returns the EvmEnv configured with only local settings.

Source

fn fork_tx_env<TX: FoundryTransaction + Default>( &self, gas_price: u128, chain_id: ChainId, ) -> TX

Returns the TxEnv with gas price and chain ID from a stable fork snapshot.

Source

fn local_tx_env<TX: FoundryTransaction + Default>(&self) -> TX

Returns the TxEnv configured from local settings only.

Source

fn cfg_env<SPEC: Into<SpecId> + Default + Clone>( &self, chain_id: ChainId, ) -> CfgEnv<SPEC>

Builds a [CfgEnv] from the options, using the provided [ChainId].

Source

pub fn get_fork( &self, config: &Config, chain_id: u64, fork_block_number: Option<BlockNumber>, ) -> Option<CreateFork>

Helper function that returns the CreateFork to use, if any.

storage caching for the CreateFork will be enabled if

  • fork_url is present
  • fork_block_number is present
  • StorageCachingConfig allows the fork_url + source chain ID pair
  • storage is allowed (no_storage_caching = false)

If all these criteria are met, then storage caching is enabled and storage info will be written to <Config::foundry_cache_dir()>/<str(chainid)>/<block>/storage.json.

for mainnet and --fork-block-number 14435000 on mac the corresponding storage cache will be at ~/.foundry/cache/mainnet/14435000/storage.json. fork_block_number is the actual block number to pin the fork to. This must be the real chain block number, not a remapped value. On some L2s (e.g., Arbitrum) block_env.number is remapped to the L1 block number, so callers must pass the block number in the context returned by EvmOpts::env_with_fork_context instead.

RPC storage caching uses the source chain ID of the discovered fork endpoint. Discover the endpoint first, for example with EvmOpts::infer_network_from_fork. Without it, chain_id decides caching.

Source

pub fn gas_limit(&self) -> u64

Returns the gas limit to use

Source

const fn get_compute_units_per_second(&self) -> u64

Returns the available compute units per second, which will be

  • u64::MAX, if no_rpc_rate_limit if set (as rate limiting is disabled)
  • the assigned compute units, if compute_units_per_second is set
  • ALCHEMY_FREE_TIER_CUPS (330) otherwise
Source

pub async fn get_remote_chain_id(&self) -> Option<Chain>

Returns the chain ID from the RPC, if any.

Trait Implementations§

Source§

impl Clone for EvmOpts

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for EvmOpts

Source§

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

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

impl Default for EvmOpts

Source§

fn default() -> Self

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

impl<'de> Deserialize<'de> for EvmOpts

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

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

impl Serialize for EvmOpts

Source§

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

Serialize this value into the given Serde serializer. Read more

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<'de, T> BorrowedRpcObject<'de> for T
where T: RpcBorrow<'de> + RpcSend,

§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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
§

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<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> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

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

§

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

§

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<TxEnv, T> FromRecoveredTx<&T> for TxEnv
where TxEnv: FromRecoveredTx<T>,

§

fn from_recovered_tx(tx: &&T, sender: Address) -> TxEnv

Builds a [TxEnv] from a transaction and a sender address.
§

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<TxEnv, T> FromTxWithEncoded<&T> for TxEnv
where TxEnv: FromTxWithEncoded<T>,

§

fn from_encoded_tx(tx: &&T, sender: Address, encoded: Bytes) -> TxEnv

Builds a [TxEnv] from a transaction, its sender, and encoded transaction bytes.
§

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> IntoRequest<T> for T

§

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<L> LayerExt<L> for L

§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in [Layered].
§

impl<T> MaybeCompact for T

§

impl<T> MaybeSerde for T
where T: Serialize + for<'de> Deserialize<'de>,

§

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
§

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

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

§

impl<'de, T> RpcBorrow<'de> for T
where T: Deserialize<'de> + Debug + Send + Sync + Unpin,

§

impl<T> RpcObject for T
where T: RpcSend + RpcRecv,

§

impl<T> RpcRecv for T
where T: DeserializeOwned + Debug + Send + Sync + Unpin + 'static,

§

impl<T> RpcSend for T
where T: Serialize + Clone + Debug + Send + Sync + Unpin,

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

impl<T> Threaded<T> for T

§

type Rest = ()

The outputs beyond the threaded value.
§

fn split(self) -> (T, ())

Splits into the threaded value and the extra outputs.
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
§

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

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

fn try_from(value: U) -> Result<T, !>

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

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: 816 bytes