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: EnvThe 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: boolFetch 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: boolWhether to accept invalid certificates from the configured RPC endpoint.
rpc_no_proxy: boolWhether to disable automatic proxy detection for the configured RPC endpoint.
compute_units_per_second: Option<u64>The available compute units per second.
See also https://docs.alchemy.com/reference/compute-units#what-are-cups-compute-units-per-second
no_rpc_rate_limit: boolDisables RPC rate limiting entirely.
no_storage_caching: boolDisables storage caching entirely.
no_fork_bal: boolDisables parent-block BAL cache prewarming for transaction-hash forks.
initial_balance: U256The initial balance of each deployed test contract.
sender: AddressThe address which will be executing all tests.
ffi: boolEnables the FFI cheatcode.
always_use_create_2_factory: boolUse the create 2 factory in all cases including tests and non-broadcasting scripts.
verbosity: u8Verbosity mode of EVM output as number of occurrences.
memory_limit: u64The memory limit per EVM execution in bytes.
If this limit is exceeded, a MemoryLimitOOG result is thrown.
isolate: boolWhether to enable isolation of calls.
disable_block_gas_limit: boolWhether to disable block gas limit checks.
enable_tx_gas_limit: boolWhether to enable tx gas limit checks as imposed by Osaka (EIP-7825).
networks: NetworkConfigsNetworks with enabled features.
create2_deployer: AddressThe 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: boolWhether the active network selection was inferred from the fork endpoint.
fork_chain_id_is_inferred: boolWhether env.chain_id was inferred from the fork endpoint.
fork_block_number_is_inferred: boolWhether fork_block_number was pinned from the fork endpoint’s latest block.
Implementations§
Source§impl EvmOpts
impl EvmOpts
Sourcefn clear_endpoint_derived_fork_state(&mut self)
fn clear_endpoint_derived_fork_state(&mut self)
Clears state derived from a fork endpoint while preserving explicit configuration.
Sourcepub fn set_fork_url(&mut self, fork_url: String)
pub fn set_fork_url(&mut self, fork_url: String)
Selects a new fork URL and clears endpoint-derived state from the previous source.
Sourcepub fn invalidate_fork_endpoint_if_source_changed(
&mut self,
fork: &Fork,
) -> bool
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.
Sourcepub fn set_explicit_network(&mut self, network: NetworkVariant)
pub fn set_explicit_network(&mut self, network: NetworkVariant)
Applies an explicit network override, replacing any endpoint-inferred selection.
Sourcepub fn expect_fork_endpoint(
&mut self,
identity: ForkEndpointIdentity,
network_is_inferred: bool,
)
pub fn expect_fork_endpoint( &mut self, identity: ForkEndpointIdentity, network_is_inferred: bool, )
Requires subsequent local fork construction to use this exact endpoint identity.
fn ensure_expected_fork_endpoint( &self, identity: &ForkEndpointIdentity, ) -> Result<()>
Sourcefn ensure_inferred_execution_profile(
&self,
identity: &ForkEndpointIdentity,
) -> Result<()>
fn ensure_inferred_execution_profile( &self, identity: &ForkEndpointIdentity, ) -> Result<()>
Rejects an inferred network whose endpoint now reports a different execution profile.
pub(crate) fn chain_id_override(&self) -> Option<ChainId>
fn endpoint_network_fallback(&self) -> NetworkConfigs
fn anvil_node_info_probe(&self) -> AnvilNodeInfoProbe
Sourcefn discovered_non_anvil_chain_id(
&self,
node_info_probe: AnvilNodeInfoProbe,
) -> Option<ChainId>
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.
pub(crate) fn fork_source_headers(&self) -> Option<&[String]>
Sourcepub async fn pin_fork_block(&mut self) -> Result<Option<BlockNumber>>
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.
Sourcepub(crate) async fn prepare_fork(&self) -> Result<Option<Fork>>
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.
Sourcepub(crate) async fn can_use_create2_deployer_at(
&self,
fork: Option<&Fork>,
) -> Result<bool>
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.
Sourcepub(crate) fn provider_for_fork<N: Network>(
&self,
fork: &Fork,
) -> Result<RootProvider<N>>
pub(crate) fn provider_for_fork<N: Network>( &self, fork: &Fork, ) -> Result<RootProvider<N>>
Returns a provider configured for an already resolved fork.
pub(crate) async fn check_fork_endpoint<N: Network, P: Provider<N>>( &self, provider: &P, fork: &Fork, ) -> Result<()>
Sourcepub(crate) async fn transaction_count_at_fork(
&self,
account: Address,
fork: &Fork,
) -> Result<u64>
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.
Sourcepub fn fork_provider_with_url<N: Network>(
&self,
fork_url: &str,
) -> Result<RootProvider<N>>
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.
pub(crate) fn fork_rpc_client(&self, fork_url: &str) -> Result<RpcClient>
Sourcepub async fn infer_network_from_fork(&mut self) -> Result<()>
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.
Sourcepub async fn discover_fork_endpoint(&self) -> Result<ForkEndpointIdentity>
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.
Sourcepub async fn fork_endpoint_identity(&self) -> Result<ForkEndpointIdentity>
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.
Sourceasync fn resolve_fork_endpoint_once<N: Network, P: Provider<N>>(
&self,
provider: &P,
node_info_probe: &mut AnvilNodeInfoProbe,
hardfork_policy: EndpointHardforkPolicy,
) -> Result<ForkEndpointIdentity>
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.
Sourceasync 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>
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.
Sourcefn non_anvil_fork_endpoint_identity(
endpoint: &str,
execution_chain_id: ChainId,
unknown_fallback: Option<NetworkConfigs>,
) -> Result<ForkEndpointIdentity>
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.
Sourcepub 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>)>
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.
Sourcepub(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)>
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.
fn fork_env_error_context(&self) -> String
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)>
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>
Sourcefn local_evm_env<SPEC: Into<SpecId> + Default + Clone, BLOCK: FoundryBlock + Default>(
&self,
) -> EvmEnv<SPEC, BLOCK>
fn local_evm_env<SPEC: Into<SpecId> + Default + Clone, BLOCK: FoundryBlock + Default>( &self, ) -> EvmEnv<SPEC, BLOCK>
Returns the EvmEnv configured with only local settings.
Sourcefn fork_tx_env<TX: FoundryTransaction + Default>(
&self,
gas_price: u128,
chain_id: ChainId,
) -> TX
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.
Sourcefn local_tx_env<TX: FoundryTransaction + Default>(&self) -> TX
fn local_tx_env<TX: FoundryTransaction + Default>(&self) -> TX
Returns the TxEnv configured from local settings only.
Sourcefn cfg_env<SPEC: Into<SpecId> + Default + Clone>(
&self,
chain_id: ChainId,
) -> CfgEnv<SPEC>
fn cfg_env<SPEC: Into<SpecId> + Default + Clone>( &self, chain_id: ChainId, ) -> CfgEnv<SPEC>
Builds a [CfgEnv] from the options, using the provided [ChainId].
Sourcepub fn get_fork(
&self,
config: &Config,
chain_id: u64,
fork_block_number: Option<BlockNumber>,
) -> Option<CreateFork>
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_urlis presentfork_block_numberis presentStorageCachingConfigallows thefork_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.
Sourceconst fn get_compute_units_per_second(&self) -> u64
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_limitif set (as rate limiting is disabled) - the assigned compute units, if
compute_units_per_secondis set - ALCHEMY_FREE_TIER_CUPS (330) otherwise
Sourcepub async fn get_remote_chain_id(&self) -> Option<Chain>
pub async fn get_remote_chain_id(&self) -> Option<Chain>
Returns the chain ID from the RPC, if any.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for EvmOpts
impl<'de> Deserialize<'de> for EvmOpts
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for EvmOpts
impl RefUnwindSafe for EvmOpts
impl Send for EvmOpts
impl Sync for EvmOpts
impl Unpin for EvmOpts
impl UnsafeUnpin for EvmOpts
impl UnwindSafe for EvmOpts
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<'de, T> BorrowedRpcObject<'de> for Twhere
T: RpcBorrow<'de> + RpcSend,
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
§impl<T> Conv for T
impl<T> Conv for T
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
impl<T> ErasedDestructor for Twhere
T: 'static,
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<TxEnv, T> FromRecoveredTx<&T> for TxEnvwhere
TxEnv: FromRecoveredTx<T>,
impl<TxEnv, T> FromRecoveredTx<&T> for TxEnvwhere
TxEnv: FromRecoveredTx<T>,
§fn from_recovered_tx(tx: &&T, sender: Address) -> TxEnv
fn from_recovered_tx(tx: &&T, sender: Address) -> TxEnv
TxEnv] from a transaction and a sender address.§impl<TxEnv, T> FromTxWithEncoded<&T> for TxEnvwhere
TxEnv: FromTxWithEncoded<T>,
impl<TxEnv, T> FromTxWithEncoded<&T> for TxEnvwhere
TxEnv: FromTxWithEncoded<T>,
§fn from_encoded_tx(tx: &&T, sender: Address, encoded: Bytes) -> TxEnv
fn from_encoded_tx(tx: &&T, sender: Address, encoded: Bytes) -> TxEnv
TxEnv] from a transaction, its sender, and encoded transaction bytes.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].impl<T> MaybeCompact for T
impl<T> MaybeSerde for Twhere
T: Serialize + for<'de> Deserialize<'de>,
§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
§fn fg(&self, value: Color) -> Painted<&T>
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 bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
§fn bg(&self, value: Color) -> Painted<&T>
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>
fn on_primary(&self) -> Painted<&T>
§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
§fn attr(&self, value: Attribute) -> Painted<&T>
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 rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
§fn quirk(&self, value: Quirk) -> Painted<&T>
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 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.
fn clear(&self) -> Painted<&T>
renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
§fn whenever(&self, value: Condition) -> Painted<&T>
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);§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
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) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
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
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
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
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
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
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
impl<'de, T> RpcBorrow<'de> for T
impl<T> RpcObject for Twhere
T: RpcSend + RpcRecv,
impl<T> RpcRecv for T
impl<T> RpcSend for T
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.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
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.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
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.§impl<T> Threaded<T> for T
impl<T> Threaded<T> for T
§impl<T> TryConv for T
impl<T> TryConv for T
§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘwhere
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘwhere
S: Into<Dispatch>,
§fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
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