pub struct NodeTestContext<Node, AddOns>where
Node: FullNodeComponents,
AddOns: RethRpcAddOns<Node>,{
pub inner: FullNode<Node, AddOns>,
pub payload: PayloadTestContext<<Node::Types as NodeTypes>::Payload>,
pub network: NetworkTestContext<Node::Network>,
pub rpc: RpcTestContext<Node, AddOns::EthApi>,
pub canonical_stream: CanonStateNotificationStream<PrimitivesTy<Node::Types>>,
}Expand description
A helper struct to handle node actions
Fields§
§inner: FullNode<Node, AddOns>The core structure representing the full node.
payload: PayloadTestContext<<Node::Types as NodeTypes>::Payload>Context for testing payload-related features.
network: NetworkTestContext<Node::Network>Context for testing network functionalities.
rpc: RpcTestContext<Node, AddOns::EthApi>Context for testing RPC features.
canonical_stream: CanonStateNotificationStream<PrimitivesTy<Node::Types>>Canonical state events.
Implementations§
Source§impl<Node, Payload, AddOns> NodeTestContext<Node, AddOns>where
Payload: PayloadTypes,
Node: FullNodeComponents,
Node::Types: NodeTypes<ChainSpec: EthereumHardforks, Payload = Payload>,
Node::Network: PeersHandleProvider,
AddOns: RethRpcAddOns<Node>,
impl<Node, Payload, AddOns> NodeTestContext<Node, AddOns>where
Payload: PayloadTypes,
Node: FullNodeComponents,
Node::Types: NodeTypes<ChainSpec: EthereumHardforks, Payload = Payload>,
Node::Network: PeersHandleProvider,
AddOns: RethRpcAddOns<Node>,
Sourcepub async fn new(
node: FullNode<Node, AddOns>,
attributes_generator: impl Fn(u64) -> Payload::PayloadAttributes + Send + Sync + 'static,
) -> Result<Self>
pub async fn new( node: FullNode<Node, AddOns>, attributes_generator: impl Fn(u64) -> Payload::PayloadAttributes + Send + Sync + 'static, ) -> Result<Self>
Creates a new test node
Payload timestamps start after the default Cancun timestamp of the payload context, or after the timestamp of the latest block if it is newer, e.g. for a custom genesis or an imported chain.
Sourcepub async fn advance(
&mut self,
length: u64,
tx_generator: impl Fn(u64) -> Pin<Box<dyn Future<Output = Bytes>>>,
) -> Result<Vec<Payload::BuiltPayload>>where
AddOns::EthApi: EthApiSpec<Provider: BlockReader<Block = BlockTy<Node::Types>>> + EthTransactions + TraceExt,
pub async fn advance(
&mut self,
length: u64,
tx_generator: impl Fn(u64) -> Pin<Box<dyn Future<Output = Bytes>>>,
) -> Result<Vec<Payload::BuiltPayload>>where
AddOns::EthApi: EthApiSpec<Provider: BlockReader<Block = BlockTy<Node::Types>>> + EthTransactions + TraceExt,
Advances the chain length blocks.
Returns the added chain as a Vec of block hashes.
Sourcepub async fn inject_and_advance(
&mut self,
raw_tx: Bytes,
) -> Result<(B256, Payload::BuiltPayload)>where
AddOns::EthApi: EthApiSpec<Provider: BlockReader<Block = BlockTy<Node::Types>>> + EthTransactions + TraceExt,
pub async fn inject_and_advance(
&mut self,
raw_tx: Bytes,
) -> Result<(B256, Payload::BuiltPayload)>where
AddOns::EthApi: EthApiSpec<Provider: BlockReader<Block = BlockTy<Node::Types>>> + EthTransactions + TraceExt,
Injects the raw transaction into the pool, advances the node one block and waits until the block is committed, returning the transaction hash and the built payload.
Returns an error if the transaction is not included in the block, see
Self::assert_new_block.
Sourcepub fn current_forkchoice_state(&self) -> Result<ForkchoiceState>
pub fn current_forkchoice_state(&self) -> Result<ForkchoiceState>
Returns the current forkchoice state of the node.
Sourcepub fn set_next_payload_timestamp(&mut self, timestamp: u64) -> Result<()>
pub fn set_next_payload_timestamp(&mut self, timestamp: u64) -> Result<()>
Sets the timestamp of the next payload built by Self::new_payload and the methods
built on it, such as Self::advance_block.
Later payloads continue from this timestamp, one second apart. The attributes generator is called with the new timestamp, so fork-dependent attributes follow it.
Returns an error if the timestamp is not greater than the timestamp of the current latest block, which is the parent of the next payload.
Sourcepub async fn new_payload(&mut self) -> Result<Payload::BuiltPayload>
pub async fn new_payload(&mut self) -> Result<Payload::BuiltPayload>
Creates a new payload from given attributes generator expects a payload attribute event and waits until the payload is built.
It triggers the resolve payload via engine api and expects the built payload event.
Sourcepub async fn build_and_submit_payload(
&mut self,
) -> Result<Payload::BuiltPayload>
pub async fn build_and_submit_payload( &mut self, ) -> Result<Payload::BuiltPayload>
Triggers payload building job and submits it to the engine.
Sourcepub async fn advance_block(&mut self) -> Result<Payload::BuiltPayload>
pub async fn advance_block(&mut self) -> Result<Payload::BuiltPayload>
Advances the node forward one block by building a payload and importing it with
Self::import_payload.
Sourcepub async fn advance_block_synced(&mut self) -> Result<Payload::BuiltPayload>
pub async fn advance_block_synced(&mut self) -> Result<Payload::BuiltPayload>
Advances the node forward one block like Self::advance_block and waits until the
transaction pool processed the new block, see Self::wait_for_pool_head.
Sourcepub async fn advance_blocks(
&mut self,
length: u64,
) -> Result<Vec<Payload::BuiltPayload>>
pub async fn advance_blocks( &mut self, length: u64, ) -> Result<Vec<Payload::BuiltPayload>>
Advances the chain length blocks, see Self::advance_block.
Unlike Self::advance, this does not inject transactions, so the blocks include the
pending transactions of the pool, if any.
Returns the built payloads.
Sourcepub async fn advance_until_receipt(
&mut self,
hash: B256,
) -> Result<RpcReceipt<<AddOns::EthApi as EthApiTypes>::NetworkTypes>>where
AddOns::EthApi: EthApiSpec<Provider: BlockReader<Block = BlockTy<Node::Types>>> + EthTransactions + TraceExt + LoadReceipt + 'static,
pub async fn advance_until_receipt(
&mut self,
hash: B256,
) -> Result<RpcReceipt<<AddOns::EthApi as EthApiTypes>::NetworkTypes>>where
AddOns::EthApi: EthApiSpec<Provider: BlockReader<Block = BlockTy<Node::Types>>> + EthTransactions + TraceExt + LoadReceipt + 'static,
Advances the chain one block at a time until the transaction with the given hash is included in a canonical block, returning its receipt.
Returns the receipt without advancing if the transaction is already included. Returns an
error if the transaction is not included within WAIT_TIMEOUT.
Sourcepub async fn advance_while<F: Future>(&mut self, fut: F) -> Result<F::Output>
pub async fn advance_while<F: Future>(&mut self, fut: F) -> Result<F::Output>
Drives fut to completion while advancing the chain one block every POLL_INTERVAL,
returning its output.
This is useful for futures that only complete once their transaction is mined, e.g. an
eth_sendRawTransactionSync request. fut is also polled while a block is built, but the
block is always built to completion, so the chain may advance one more block after fut
completed.
Returns an error if fut does not complete within WAIT_TIMEOUT.
Sourcepub async fn wait_block(
&self,
number: BlockNumber,
expected_block_hash: BlockHash,
wait_finish_checkpoint: bool,
) -> Result<()>
pub async fn wait_block( &self, number: BlockNumber, expected_block_hash: BlockHash, wait_finish_checkpoint: bool, ) -> Result<()>
Waits for block to be available on node.
Returns an error if the block is not available within WAIT_TIMEOUT.
Sourcepub async fn wait_unwind(&self, number: BlockNumber) -> Result<()>
pub async fn wait_unwind(&self, number: BlockNumber) -> Result<()>
Waits for the node to unwind to the given block number.
Returns an error if the node does not unwind within WAIT_TIMEOUT.
Sourcepub async fn wait_for_pool(
&self,
condition: impl FnMut(&Node::Pool) -> bool,
) -> Result<()>
pub async fn wait_for_pool( &self, condition: impl FnMut(&Node::Pool) -> bool, ) -> Result<()>
Waits until condition holds for the transaction pool of the node.
Returns an error if the condition does not hold within WAIT_TIMEOUT.
Sourcepub async fn wait_for_pool_head(&self, hash: B256) -> Result<()>
pub async fn wait_for_pool_head(&self, hash: B256) -> Result<()>
Waits until the transaction pool of the node processed the canonical state update that made the block with the given hash its head.
The pool maintenance task processes new heads in the background, so right after e.g. a
forkchoice update the pool can still contain the transactions mined in the new block or use
outdated sender nonces and pending fees. The pool updates its last seen block together with
these, so they are up to date once this returns. Exceptions are reorgs, after which the
maintenance task re-injects the transactions of the old chain only afterwards, so wait for
them with Self::wait_for_pool, and commits deeper than the maximum update depth of the
maintenance task, e.g. after a long sync, which only update the last seen block.
Returns an error if the pool does not process the block within WAIT_TIMEOUT, e.g.
because the block is not the canonical head, the pool already processed a newer head, or
the block was synced by backfill, which does not notify the pool.
Sourcepub async fn assert_new_block(
&mut self,
tip_tx_hash: B256,
block_hash: B256,
block_number: BlockNumber,
) -> Result<()>
pub async fn assert_new_block( &mut self, tip_tx_hash: B256, block_hash: B256, block_number: BlockNumber, ) -> Result<()>
Asserts that a new block has been added to the blockchain and the tx has been included in the block, at any position.
Does NOT work for pipeline since there’s no stream notification! Returns an error if the
block is not committed within WAIT_TIMEOUT.
Sourcepub fn block_hash(&self, number: u64) -> BlockHash
pub fn block_hash(&self, number: u64) -> BlockHash
Gets block hash by number.
Sourcepub async fn sync_to(&self, block: BlockHash) -> Result<()>
pub async fn sync_to(&self, block: BlockHash) -> Result<()>
Sends FCU and waits for the node to sync to the given block.
Returns an error if the node does not sync within WAIT_TIMEOUT.
Sourcepub async fn update_forkchoice(
&self,
current_head: B256,
new_head: B256,
) -> Result<ForkchoiceUpdated>
pub async fn update_forkchoice( &self, current_head: B256, new_head: B256, ) -> Result<ForkchoiceUpdated>
Sends a forkchoice update message to the engine and returns its response.
Sourcepub async fn update_optimistic_forkchoice(
&self,
hash: B256,
) -> Result<ForkchoiceUpdated>
pub async fn update_optimistic_forkchoice( &self, hash: B256, ) -> Result<ForkchoiceUpdated>
Sends forkchoice update to the engine api with a zero finalized hash and returns its response.
Sourcepub async fn submit_payload(
&self,
payload: Payload::BuiltPayload,
) -> Result<B256>
pub async fn submit_payload( &self, payload: Payload::BuiltPayload, ) -> Result<B256>
Submits a payload to the engine.
Sourcepub async fn import_payload(
&self,
payload: Payload::BuiltPayload,
) -> Result<B256>
pub async fn import_payload( &self, payload: Payload::BuiltPayload, ) -> Result<B256>
Submits a payload to the engine and makes its block the canonical head, returning the block hash.
The forkchoice update marks the block as head, safe, and finalized block, like
Self::advance_block does, so the node can’t reorg to a chain without the block
afterwards. The engine only reports the forkchoice update valid after making the head
canonical, so the block is the latest block of the node once this returns. The transaction
pool processes the new block in the background, see Self::wait_for_pool.
The parent of the payload must be known to the node, e.g. to import a payload built by another node into its peers. Returns an error if the engine does not report the forkchoice update valid, e.g. because the payload is invalid.
Sourcepub fn rpc_client(&self) -> Option<HttpClient>
pub fn rpc_client(&self) -> Option<HttpClient>
Returns an RPC client.
Sourcepub fn rpc_provider(
&self,
) -> FillProvider<impl TxFiller<Ethereum> + use<Node, Payload, AddOns>, RootProvider>
pub fn rpc_provider( &self, ) -> FillProvider<impl TxFiller<Ethereum> + use<Node, Payload, AddOns>, RootProvider>
Returns an alloy provider with the recommended fillers connected to the HTTP RPC server.
§Panics
If the HTTP RPC server is disabled.
Sourcepub fn rpc_provider_with_wallet<W>(
&self,
wallet: W,
) -> FillProvider<impl TxFiller<Ethereum> + use<W, Node, Payload, AddOns>, RootProvider>where
W: IntoWallet<Ethereum, NetworkWallet: Clone>,
pub fn rpc_provider_with_wallet<W>(
&self,
wallet: W,
) -> FillProvider<impl TxFiller<Ethereum> + use<W, Node, Payload, AddOns>, RootProvider>where
W: IntoWallet<Ethereum, NetworkWallet: Clone>,
Returns an alloy provider with the recommended fillers and the given wallet connected to the HTTP RPC server.
Transactions sent via the provider are signed by the wallet, e.g. a
PrivateKeySigner of the test
Wallet.
§Panics
If the HTTP RPC server is disabled.
Sourcepub fn rpc_provider_for<Net: RecommendedFillers>(
&self,
) -> FillProvider<impl TxFiller<Net> + use<Net, Node, Payload, AddOns>, RootProvider<Net>, Net>
pub fn rpc_provider_for<Net: RecommendedFillers>( &self, ) -> FillProvider<impl TxFiller<Net> + use<Net, Node, Payload, AddOns>, RootProvider<Net>, Net>
Returns an alloy provider for the network Net with its recommended fillers connected to
the HTTP RPC server, polling every RPC_PROVIDER_POLL_INTERVAL.
This is Self::rpc_provider for nodes whose RPC types differ from Ethereum’s.
§Panics
If the HTTP RPC server is disabled.
Sourcepub fn rpc_provider_with_wallet_for<Net, W>(
&self,
wallet: W,
) -> FillProvider<impl TxFiller<Net> + use<Net, W, Node, Payload, AddOns>, RootProvider<Net>, Net>where
Net: RecommendedFillers,
W: IntoWallet<Net, NetworkWallet: Clone>,
pub fn rpc_provider_with_wallet_for<Net, W>(
&self,
wallet: W,
) -> FillProvider<impl TxFiller<Net> + use<Net, W, Node, Payload, AddOns>, RootProvider<Net>, Net>where
Net: RecommendedFillers,
W: IntoWallet<Net, NetworkWallet: Clone>,
Returns an alloy provider for the network Net with its recommended fillers and the given
wallet connected to the HTTP RPC server, polling every RPC_PROVIDER_POLL_INTERVAL.
This is Self::rpc_provider_with_wallet for nodes whose RPC types differ from
Ethereum’s.
§Panics
If the HTTP RPC server is disabled.
Sourcepub fn auth_server_handle(&self) -> AuthServerHandle
pub fn auth_server_handle(&self) -> AuthServerHandle
Returns an Engine API client.
Sourcepub fn to_node_client(&self) -> Result<NodeClient<Payload>>
pub fn to_node_client(&self) -> Result<NodeClient<Payload>>
Creates a crate::testsuite::NodeClient from this test context.
This helper method extracts the necessary handles and creates a client that can interact with both the regular RPC and Engine API endpoints. It automatically includes the beacon engine handle for direct consensus engine interaction and read-only access to the node’s database.
Sourcepub async fn testing_build_block_v1(
&self,
request: TestingBuildBlockRequestV1,
) -> Result<ExecutionPayloadEnvelopeV5>
pub async fn testing_build_block_v1( &self, request: TestingBuildBlockRequestV1, ) -> Result<ExecutionPayloadEnvelopeV5>
Calls the testing_buildBlockV1 RPC on this node.
This endpoint builds a block using the provided parent, payload attributes, and
transactions. Requires the Testing RPC module to be enabled.
Auto Trait Implementations§
impl<Node, AddOns> !Freeze for NodeTestContext<Node, AddOns>
impl<Node, AddOns> !RefUnwindSafe for NodeTestContext<Node, AddOns>
impl<Node, AddOns> !UnwindSafe for NodeTestContext<Node, AddOns>
impl<Node, AddOns> Send for NodeTestContext<Node, AddOns>where
FullNode<Node, AddOns>: Send,
PayloadTestContext<<<Node as FullNodeTypes>::Types as NodeTypes>::Payload>: Send,
NetworkTestContext<<Node as FullNodeComponents>::Network>: Send,
RpcTestContext<Node, <AddOns as RethRpcAddOns<Node>>::EthApi>: Send,
CanonStateNotificationStream<<<Node as FullNodeTypes>::Types as NodeTypes>::Primitives>: Send,
impl<Node, AddOns> Sync for NodeTestContext<Node, AddOns>where
FullNode<Node, AddOns>: Sync,
PayloadTestContext<<<Node as FullNodeTypes>::Types as NodeTypes>::Payload>: Sync,
NetworkTestContext<<Node as FullNodeComponents>::Network>: Sync,
RpcTestContext<Node, <AddOns as RethRpcAddOns<Node>>::EthApi>: Sync,
CanonStateNotificationStream<<<Node as FullNodeTypes>::Types as NodeTypes>::Primitives>: Sync,
impl<Node, AddOns> Unpin for NodeTestContext<Node, AddOns>where
FullNode<Node, AddOns>: Unpin,
PayloadTestContext<<<Node as FullNodeTypes>::Types as NodeTypes>::Payload>: Unpin,
NetworkTestContext<<Node as FullNodeComponents>::Network>: Unpin,
RpcTestContext<Node, <AddOns as RethRpcAddOns<Node>>::EthApi>: Unpin,
CanonStateNotificationStream<<<Node as FullNodeTypes>::Types as NodeTypes>::Primitives>: Unpin,
impl<Node, AddOns> UnsafeUnpin for NodeTestContext<Node, AddOns>where
FullNode<Node, AddOns>: UnsafeUnpin,
PayloadTestContext<<<Node as FullNodeTypes>::Types as NodeTypes>::Payload>: UnsafeUnpin,
NetworkTestContext<<Node as FullNodeComponents>::Network>: UnsafeUnpin,
RpcTestContext<Node, <AddOns as RethRpcAddOns<Node>>::EthApi>: UnsafeUnpin,
CanonStateNotificationStream<<<Node as FullNodeTypes>::Types as NodeTypes>::Primitives>: UnsafeUnpin,
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<T> Conv for T
impl<T> Conv for T
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> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§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> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> 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> MaybeSend for Twhere
T: Send,
§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> ServiceExt for T
impl<T> ServiceExt for T
§fn propagate_header(self, header: HeaderName) -> PropagateHeader<Self>where
Self: Sized,
fn propagate_header(self, header: HeaderName) -> PropagateHeader<Self>where
Self: Sized,
§fn add_extension<T>(self, value: T) -> AddExtension<Self, T>where
Self: Sized,
fn add_extension<T>(self, value: T) -> AddExtension<Self, T>where
Self: Sized,
§fn map_request_body<F>(self, f: F) -> MapRequestBody<Self, F>where
Self: Sized,
fn map_request_body<F>(self, f: F) -> MapRequestBody<Self, F>where
Self: Sized,
§fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>where
Self: Sized,
fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>where
Self: Sized,
§fn compression(self) -> Compression<Self>where
Self: Sized,
fn compression(self) -> Compression<Self>where
Self: Sized,
§fn decompression(self) -> Decompression<Self>where
Self: Sized,
fn decompression(self) -> Decompression<Self>where
Self: Sized,
§fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
§fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
§fn follow_redirects(self) -> FollowRedirect<Self>where
Self: Sized,
fn follow_redirects(self) -> FollowRedirect<Self>where
Self: Sized,
§fn sensitive_headers(
self,
headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveRequestHeaders<SetSensitiveResponseHeaders<Self>>where
Self: Sized,
fn sensitive_headers(
self,
headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveRequestHeaders<SetSensitiveResponseHeaders<Self>>where
Self: Sized,
§fn sensitive_request_headers(
self,
headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveRequestHeaders<Self>where
Self: Sized,
fn sensitive_request_headers(
self,
headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveRequestHeaders<Self>where
Self: Sized,
§fn sensitive_response_headers(
self,
headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveResponseHeaders<Self>where
Self: Sized,
fn sensitive_response_headers(
self,
headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveResponseHeaders<Self>where
Self: Sized,
§fn override_request_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetRequestHeader<Self, M>where
Self: Sized,
fn override_request_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetRequestHeader<Self, M>where
Self: Sized,
§fn append_request_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetRequestHeader<Self, M>where
Self: Sized,
fn append_request_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetRequestHeader<Self, M>where
Self: Sized,
§fn insert_request_header_if_not_present<M>(
self,
header_name: HeaderName,
make: M,
) -> SetRequestHeader<Self, M>where
Self: Sized,
fn insert_request_header_if_not_present<M>(
self,
header_name: HeaderName,
make: M,
) -> SetRequestHeader<Self, M>where
Self: Sized,
§fn override_response_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetResponseHeader<Self, M>where
Self: Sized,
fn override_response_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetResponseHeader<Self, M>where
Self: Sized,
§fn append_response_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetResponseHeader<Self, M>where
Self: Sized,
fn append_response_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetResponseHeader<Self, M>where
Self: Sized,
§fn insert_response_header_if_not_present<M>(
self,
header_name: HeaderName,
make: M,
) -> SetResponseHeader<Self, M>where
Self: Sized,
fn insert_response_header_if_not_present<M>(
self,
header_name: HeaderName,
make: M,
) -> SetResponseHeader<Self, M>where
Self: Sized,
§fn set_request_id<M>(
self,
header_name: HeaderName,
make_request_id: M,
) -> SetRequestId<Self, M>where
Self: Sized,
M: MakeRequestId,
fn set_request_id<M>(
self,
header_name: HeaderName,
make_request_id: M,
) -> SetRequestId<Self, M>where
Self: Sized,
M: MakeRequestId,
§fn set_x_request_id<M>(self, make_request_id: M) -> SetRequestId<Self, M>where
Self: Sized,
M: MakeRequestId,
fn set_x_request_id<M>(self, make_request_id: M) -> SetRequestId<Self, M>where
Self: Sized,
M: MakeRequestId,
x-request-id as the header name. Read more§fn propagate_request_id(
self,
header_name: HeaderName,
) -> PropagateRequestId<Self>where
Self: Sized,
fn propagate_request_id(
self,
header_name: HeaderName,
) -> PropagateRequestId<Self>where
Self: Sized,
§fn propagate_x_request_id(self) -> PropagateRequestId<Self>where
Self: Sized,
fn propagate_x_request_id(self) -> PropagateRequestId<Self>where
Self: Sized,
x-request-id as the header name. Read more§fn catch_panic(self) -> CatchPanic<Self, DefaultResponseForPanic>where
Self: Sized,
fn catch_panic(self) -> CatchPanic<Self, DefaultResponseForPanic>where
Self: Sized,
500 Internal Server responses. Read more§fn request_body_limit(self, limit: usize) -> RequestBodyLimit<Self>where
Self: Sized,
fn request_body_limit(self, limit: usize) -> RequestBodyLimit<Self>where
Self: Sized,
413 Payload Too Large responses. Read more§fn trim_trailing_slash(self) -> NormalizePath<Self>where
Self: Sized,
fn trim_trailing_slash(self) -> NormalizePath<Self>where
Self: Sized,
§fn append_trailing_slash(self) -> NormalizePath<Self>where
Self: Sized,
fn append_trailing_slash(self) -> NormalizePath<Self>where
Self: Sized,
§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> 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> ⓘ
Source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
Source§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>,
Source§fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
Layout§
Note: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.