pub struct E2ETestSetupBuilder<N: NodeBuilderHelper> { /* private fields */ }Expand description
Builder for configuring and launching test node setups.
By default, the nodes:
- are
Defaultinstances ofN, seeSelf::with_node, - run on a shared
Runtime::testruntime, unless they are restartable, - build payloads with
eth_payload_attributesfor the hardforks active in the chain spec, unless created withSelf::new_with_attributes_generator, - have discovery disabled, use unused ports and serve all RPC modules except
testingover HTTP, - report an idle sync state from startup, so they gossip transactions before their first block,
- do not persist their peers, so a restarted node only connects to the peers a test connects it to,
- are connected to each other.
Once launched, each node receives a forkchoice update that makes genesis the head, safe and finalized block, unless dev mining is enabled.
Configuration and tree configuration modifiers are applied in the order they are added. Like
for a node launched from the command line, the tree configuration of a node is derived from its
final node configuration, see NodeConfig::tree_config, so the engine arguments and
--debug.skip-state-root set by node configuration modifiers take effect. Tree configuration
modifiers are applied last and take precedence over them.
Use E2ETestSetupExt::test_setup_for to set up nodes on the test_chain_spec at a
hardfork, or E2ETestSetupExt::test_setup for any other chain spec:
let (mut node, wallet) = EthereumNode::test_setup_for(EthereumHardfork::Cancun)
.with_tree_config_modifier(|config| config.with_persistence_threshold(0))
.build_single()
.await?;Implementations§
Source§impl E2ETestSetupBuilder<EthereumNode>
impl E2ETestSetupBuilder<EthereumNode>
Sourcepub fn with_snap_control(self, control: &SnapControl) -> Self
pub fn with_snap_control(self, control: &SnapControl) -> Self
Wraps the backfill chosen by the node configuration with control.
Source§impl<N: NodeBuilderHelper> E2ETestSetupBuilder<N>
impl<N: NodeBuilderHelper> E2ETestSetupBuilder<N>
Sourcepub fn new(num_nodes: usize, chain_spec: Arc<N::ChainSpec>) -> Selfwhere
PayloadAttrTy<N>: From<PayloadAttributes>,
pub fn new(num_nodes: usize, chain_spec: Arc<N::ChainSpec>) -> Selfwhere
PayloadAttrTy<N>: From<PayloadAttributes>,
Creates a new builder for num_nodes nodes of the given chain.
The nodes build payloads with eth_payload_attributes for the chain spec, which requires
the payload attributes of the node to be convertible from Ethereum’s. Use
Self::new_with_attributes_generator for other nodes.
Sourcepub fn new_with_attributes_generator<G>(
num_nodes: usize,
chain_spec: Arc<N::ChainSpec>,
attributes_generator: G,
) -> Self
pub fn new_with_attributes_generator<G>( num_nodes: usize, chain_spec: Arc<N::ChainSpec>, attributes_generator: G, ) -> Self
Creates a new builder for num_nodes nodes of the given chain, whose payloads are built
with the attributes returned by attributes_generator, see
Self::with_attributes_generator.
Unlike Self::new, this does not require the payload attributes of the node to be
convertible from Ethereum’s.
Sourcepub const fn with_num_nodes(self, num_nodes: usize) -> Self
pub const fn with_num_nodes(self, num_nodes: usize) -> Self
Sets the number of nodes to launch.
Sourcepub fn with_runtime(self, runtime: Runtime) -> Self
pub fn with_runtime(self, runtime: Runtime) -> Self
Launches the nodes on the given runtime instead of a new Runtime::test.
This lets multiple setups, or other components of a test, share the same tokio handle and
rayon pools. Note that the tasks of the nodes are only shut down once all handles to the
runtime are dropped, not when the nodes are dropped. Restartable nodes, see
Self::with_restartable_nodes, can not share a runtime.
Sourcepub fn with_attributes_generator<G>(self, generator: G) -> Self
pub fn with_attributes_generator<G>(self, generator: G) -> Self
Sets the generator for the payload attributes of the payloads built by the test nodes.
The generator is called with the timestamp of the next payload. It replaces the generator
of the constructor, which is eth_payload_attributes for the chain spec of the setup for
Self::new.
Sourcepub const fn with_connect_nodes(self, connect_nodes: bool) -> Self
pub const fn with_connect_nodes(self, connect_nodes: bool) -> Self
Sets whether nodes should be interconnected (default: true).
Sourcepub fn with_tree_config_modifier<G>(self, modifier: G) -> Self
pub fn with_tree_config_modifier<G>(self, modifier: G) -> Self
Adds a modifier for the tree configuration.
The closure receives the current tree config and returns a modified version. The base
config is derived from the node configuration after all node configuration modifiers ran,
see NodeConfig::tree_config. Unless a node configuration modifier changes
engine.cross_block_cache_size, it uses a small cross block cache of 1 MiB.
Sourcepub fn with_node_config_modifier<G>(self, modifier: G) -> Self
pub fn with_node_config_modifier<G>(self, modifier: G) -> Self
Adds a modifier for the node configuration.
The closure receives the current node config and returns a modified version. Its engine
arguments and debug.skip_state_root configure the engine tree, unless a
tree configuration modifier overrides them.
Sourcepub fn with_rpc_modifier<G>(self, modifier: G) -> Self
pub fn with_rpc_modifier<G>(self, modifier: G) -> Self
Adds a modifier for the RPC server arguments.
The closure receives the current arguments, which serve all modules except testing over
HTTP on an unused port.
Sourcepub fn with_pruning(self, pruning: PruningArgs) -> Self
pub fn with_pruning(self, pruning: PruningArgs) -> Self
Sets the pruning arguments for the test nodes.
Sourcepub const fn with_storage_v2(self, storage_v2: bool) -> Self
pub const fn with_storage_v2(self, storage_v2: bool) -> Self
Sets whether nodes use the v2 storage layout (--storage.v2), which routes tx hashes,
history indices, etc. to RocksDB and changesets/senders to static files.
Defaults to the node’s --storage.v2 default. Node config modifiers run afterwards and can
still override it.
Sourcepub fn with_dev_mode(self, dev: bool) -> Self
pub fn with_dev_mode(self, dev: bool) -> Self
Sets whether the nodes run in dev mode (--dev).
Unlike dev mining, this only sets the dev flag and does not start a local miner.
Sourcepub fn with_dev_mining(self, block_time: Option<Duration>) -> Self
pub fn with_dev_mining(self, block_time: Option<Duration>) -> Self
Launches the node in dev mode with a local miner that builds a block every block_time, or
as soon as a transaction is pending if None.
Dev mining is limited to a single node, since every node would mine its own chain. The local
miner drives forkchoice and payload building, so the node does not receive the initial
forkchoice update to genesis, and the block producing helpers of NodeTestContext, e.g.
NodeTestContext::advance_block and NodeTestContext::update_forkchoice, must not be
used. Use Self::map_dev_payload_attributes to customize the payload attributes of the
mined blocks.
Sourcepub fn map_dev_payload_attributes<G>(self, map: G) -> Self
pub fn map_dev_payload_attributes<G>(self, map: G) -> Self
Maps the payload attributes of the blocks built by the local miner of dev mining nodes, e.g. to set the fee recipient.
Mappers are applied in the order they are added. Has no effect unless dev mining is enabled.
Sourcepub fn with_backfill<F, B>(self, backfill: F) -> Selfwhere
F: Fn(&NodeConfig<N::ChainSpec>) -> B + Send + Sync + 'static,
B: BackfillSyncBuilder<NodeTypesWithDBAdapter<N, TmpDB>, BackfillClientFor<FullNodeTypesAdapter<N, TmpDB, BlockchainProvider<NodeTypesWithDBAdapter<N, TmpDB>>>, ComponentsFor<FullNodeTypesAdapter<N, TmpDB, BlockchainProvider<NodeTypesWithDBAdapter<N, TmpDB>>>>>> + 'static,
pub fn with_backfill<F, B>(self, backfill: F) -> Selfwhere
F: Fn(&NodeConfig<N::ChainSpec>) -> B + Send + Sync + 'static,
B: BackfillSyncBuilder<NodeTypesWithDBAdapter<N, TmpDB>, BackfillClientFor<FullNodeTypesAdapter<N, TmpDB, BlockchainProvider<NodeTypesWithDBAdapter<N, TmpDB>>>, ComponentsFor<FullNodeTypesAdapter<N, TmpDB, BlockchainProvider<NodeTypesWithDBAdapter<N, TmpDB>>>>>> + 'static,
Launches each node with the engine’s backfill built by the BackfillSyncBuilder that
backfill returns for the node’s final configuration, instead of the staged pipeline.
Like a node launched from the command line, the backfill follows the node’s flags, e.g.
with_backfill(EthereumBackfill::new) snap syncs once a node configuration modifier sets
--snap.v2. A restarted node builds its backfill again from its configuration.
Cannot be combined with dev mining: the harness launches dev mining nodes with the staged pipeline.
Sourcepub fn with_node<F>(self, node: F) -> Self
pub fn with_node<F>(self, node: F) -> Self
Sets the factory of the node instances, which is called with the index of each node when it is launched.
Defaults to Default::default. Use this to configure the node type, or to keep a handle
of the node instance, e.g. one that reads state of the node once it is launched.
Sourcepub fn with_node_builder_modifier<G>(self, modifier: G) -> Self
pub fn with_node_builder_modifier<G>(self, modifier: G) -> Self
Adds a modifier for the node builder of each test node.
The closure receives the TestNodeBuilder after the node types, components and add-ons
are configured, and returns it to be launched. It can e.g. install an ExEx with
install_exex, extend the RPC modules with
extend_rpc_modules, set the
on_component_initialized, on_node_started and on_rpc_started hooks, or modify the
add-ons with map_add_ons.
Modifiers are applied to every node in the order they are added. The node builder keeps a
single hook of each kind, so a modifier that sets e.g. the extend_rpc_modules hook
replaces the one set by an earlier modifier. The datadir and tree configuration of the node
are derived before the modifiers run, so change the node configuration with
Self::with_node_config_modifier instead of builder.config.
Sourcepub const fn with_restartable_nodes(self) -> Self
pub const fn with_restartable_nodes(self) -> Self
Makes the nodes restartable, so they can be stopped and launched again on the same datadir
with NodeTestContext::stop and NodeTestContext::restart.
Each restartable node runs on a Runtime::test runtime of its own instead of the shared
one, so stopping it shuts down only its tasks. This costs a few threads per node, which is
why nodes are not restartable by default. Conflicts with Self::with_runtime.
Sourcepub async fn build(self) -> Result<(Vec<NodeHelperType<N>>, Wallet)>
pub async fn build(self) -> Result<(Vec<NodeHelperType<N>>, Wallet)>
Builds and launches the test nodes.
Sourcepub async fn build_single(self) -> Result<(NodeHelperType<N>, Wallet)>
pub async fn build_single(self) -> Result<(NodeHelperType<N>, Wallet)>
Builds and launches a single test node.
Returns an error if the builder was not configured with exactly one node.
Trait Implementations§
Auto Trait Implementations§
impl<N> !RefUnwindSafe for E2ETestSetupBuilder<N>
impl<N> !UnwindSafe for E2ETestSetupBuilder<N>
impl<N> Freeze for E2ETestSetupBuilder<N>where
<<N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::ComponentsBuilder as NodeComponentsBuilder<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::Components: Sized,
<<N as NodeTypes>::Primitives as NodePrimitives>::BlockHeader: Sized,
<<N as NodeTypes>::Primitives as NodePrimitives>::Receipt: Sized,
<<N as NodeTypes>::Primitives as NodePrimitives>::SignedTx: Sized,
<N as NodeTypes>::Primitives: Sized,
Arc<<N as NodeTypes>::ChainSpec>: Freeze,
Arc<dyn Fn(u64) -> <<N as NodeTypes>::Payload as PayloadTypes>::PayloadAttributes + Sync + Send>: Freeze,
Vec<Box<dyn Fn(NodeConfig<<N as NodeTypes>::ChainSpec>) -> NodeConfig<<N as NodeTypes>::ChainSpec> + Sync + Send>>: Freeze,
Option<Arc<dyn Fn(LaunchArgs<N>, Arc<TempDatabase<DatabaseEnv>>) -> Pin<Box<dyn Future<Output = Result<NodeTestContext<NodeAdapter<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>, <<N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::ComponentsBuilder as NodeComponentsBuilder<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::Components>, <N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::AddOns>, Report>> + Send>> + Sync + Send>>: Freeze,
Option<Arc<dyn Fn(<<N as NodeTypes>::Payload as PayloadTypes>::PayloadAttributes) -> <<N as NodeTypes>::Payload as PayloadTypes>::PayloadAttributes + Sync + Send>>: Freeze,
Arc<dyn Fn(usize) -> N + Sync + Send>: Freeze,
Vec<Arc<dyn Fn(NodeBuilderWithComponents<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>, <N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::ComponentsBuilder, <N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::AddOns>) -> NodeBuilderWithComponents<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>, <N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::ComponentsBuilder, <N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::AddOns> + Sync + Send>>: Freeze,
impl<N> Send for E2ETestSetupBuilder<N>where
<<N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::ComponentsBuilder as NodeComponentsBuilder<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::Components: Sized,
<<N as NodeTypes>::Primitives as NodePrimitives>::BlockHeader: Sized,
<<N as NodeTypes>::Primitives as NodePrimitives>::Receipt: Sized,
<<N as NodeTypes>::Primitives as NodePrimitives>::SignedTx: Sized,
<N as NodeTypes>::Primitives: Sized,
Arc<<N as NodeTypes>::ChainSpec>: Send,
Arc<dyn Fn(u64) -> <<N as NodeTypes>::Payload as PayloadTypes>::PayloadAttributes + Sync + Send>: Send,
Vec<Box<dyn Fn(NodeConfig<<N as NodeTypes>::ChainSpec>) -> NodeConfig<<N as NodeTypes>::ChainSpec> + Sync + Send>>: Send,
Option<Arc<dyn Fn(LaunchArgs<N>, Arc<TempDatabase<DatabaseEnv>>) -> Pin<Box<dyn Future<Output = Result<NodeTestContext<NodeAdapter<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>, <<N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::ComponentsBuilder as NodeComponentsBuilder<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::Components>, <N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::AddOns>, Report>> + Send>> + Sync + Send>>: Send,
Option<Arc<dyn Fn(<<N as NodeTypes>::Payload as PayloadTypes>::PayloadAttributes) -> <<N as NodeTypes>::Payload as PayloadTypes>::PayloadAttributes + Sync + Send>>: Send,
Arc<dyn Fn(usize) -> N + Sync + Send>: Send,
Vec<Arc<dyn Fn(NodeBuilderWithComponents<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>, <N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::ComponentsBuilder, <N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::AddOns>) -> NodeBuilderWithComponents<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>, <N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::ComponentsBuilder, <N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::AddOns> + Sync + Send>>: Send,
impl<N> Sync for E2ETestSetupBuilder<N>where
<<N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::ComponentsBuilder as NodeComponentsBuilder<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::Components: Sized,
<<N as NodeTypes>::Primitives as NodePrimitives>::BlockHeader: Sized,
<<N as NodeTypes>::Primitives as NodePrimitives>::Receipt: Sized,
<<N as NodeTypes>::Primitives as NodePrimitives>::SignedTx: Sized,
<N as NodeTypes>::Primitives: Sized,
Arc<<N as NodeTypes>::ChainSpec>: Sync,
Arc<dyn Fn(u64) -> <<N as NodeTypes>::Payload as PayloadTypes>::PayloadAttributes + Sync + Send>: Sync,
Vec<Box<dyn Fn(NodeConfig<<N as NodeTypes>::ChainSpec>) -> NodeConfig<<N as NodeTypes>::ChainSpec> + Sync + Send>>: Sync,
Option<Arc<dyn Fn(LaunchArgs<N>, Arc<TempDatabase<DatabaseEnv>>) -> Pin<Box<dyn Future<Output = Result<NodeTestContext<NodeAdapter<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>, <<N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::ComponentsBuilder as NodeComponentsBuilder<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::Components>, <N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::AddOns>, Report>> + Send>> + Sync + Send>>: Sync,
Option<Arc<dyn Fn(<<N as NodeTypes>::Payload as PayloadTypes>::PayloadAttributes) -> <<N as NodeTypes>::Payload as PayloadTypes>::PayloadAttributes + Sync + Send>>: Sync,
Arc<dyn Fn(usize) -> N + Sync + Send>: Sync,
Vec<Arc<dyn Fn(NodeBuilderWithComponents<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>, <N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::ComponentsBuilder, <N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::AddOns>) -> NodeBuilderWithComponents<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>, <N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::ComponentsBuilder, <N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::AddOns> + Sync + Send>>: Sync,
impl<N> Unpin for E2ETestSetupBuilder<N>where
<<N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::ComponentsBuilder as NodeComponentsBuilder<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::Components: Sized,
<<N as NodeTypes>::Primitives as NodePrimitives>::BlockHeader: Sized,
<<N as NodeTypes>::Primitives as NodePrimitives>::Receipt: Sized,
<<N as NodeTypes>::Primitives as NodePrimitives>::SignedTx: Sized,
<N as NodeTypes>::Primitives: Sized,
Arc<<N as NodeTypes>::ChainSpec>: Unpin,
Arc<dyn Fn(u64) -> <<N as NodeTypes>::Payload as PayloadTypes>::PayloadAttributes + Sync + Send>: Unpin,
Vec<Box<dyn Fn(NodeConfig<<N as NodeTypes>::ChainSpec>) -> NodeConfig<<N as NodeTypes>::ChainSpec> + Sync + Send>>: Unpin,
Option<Arc<dyn Fn(LaunchArgs<N>, Arc<TempDatabase<DatabaseEnv>>) -> Pin<Box<dyn Future<Output = Result<NodeTestContext<NodeAdapter<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>, <<N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::ComponentsBuilder as NodeComponentsBuilder<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::Components>, <N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::AddOns>, Report>> + Send>> + Sync + Send>>: Unpin,
Option<Arc<dyn Fn(<<N as NodeTypes>::Payload as PayloadTypes>::PayloadAttributes) -> <<N as NodeTypes>::Payload as PayloadTypes>::PayloadAttributes + Sync + Send>>: Unpin,
Arc<dyn Fn(usize) -> N + Sync + Send>: Unpin,
Vec<Arc<dyn Fn(NodeBuilderWithComponents<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>, <N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::ComponentsBuilder, <N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::AddOns>) -> NodeBuilderWithComponents<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>, <N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::ComponentsBuilder, <N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::AddOns> + Sync + Send>>: Unpin,
impl<N> UnsafeUnpin for E2ETestSetupBuilder<N>where
<<N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::ComponentsBuilder as NodeComponentsBuilder<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::Components: Sized,
<<N as NodeTypes>::Primitives as NodePrimitives>::BlockHeader: Sized,
<<N as NodeTypes>::Primitives as NodePrimitives>::Receipt: Sized,
<<N as NodeTypes>::Primitives as NodePrimitives>::SignedTx: Sized,
<N as NodeTypes>::Primitives: Sized,
Arc<<N as NodeTypes>::ChainSpec>: UnsafeUnpin,
Arc<dyn Fn(u64) -> <<N as NodeTypes>::Payload as PayloadTypes>::PayloadAttributes + Sync + Send>: UnsafeUnpin,
Vec<Box<dyn Fn(NodeConfig<<N as NodeTypes>::ChainSpec>) -> NodeConfig<<N as NodeTypes>::ChainSpec> + Sync + Send>>: UnsafeUnpin,
Option<Arc<dyn Fn(LaunchArgs<N>, Arc<TempDatabase<DatabaseEnv>>) -> Pin<Box<dyn Future<Output = Result<NodeTestContext<NodeAdapter<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>, <<N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::ComponentsBuilder as NodeComponentsBuilder<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::Components>, <N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::AddOns>, Report>> + Send>> + Sync + Send>>: UnsafeUnpin,
Option<Arc<dyn Fn(<<N as NodeTypes>::Payload as PayloadTypes>::PayloadAttributes) -> <<N as NodeTypes>::Payload as PayloadTypes>::PayloadAttributes + Sync + Send>>: UnsafeUnpin,
Arc<dyn Fn(usize) -> N + Sync + Send>: UnsafeUnpin,
Vec<Arc<dyn Fn(NodeBuilderWithComponents<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>, <N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::ComponentsBuilder, <N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::AddOns>) -> NodeBuilderWithComponents<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>, <N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::ComponentsBuilder, <N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, BlockchainProvider<NodeTypesWithDBAdapter<N, Arc<TempDatabase<DatabaseEnv>>>>>>>::AddOns> + Sync + Send>>: 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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
§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> MaybeDebug for Twhere
T: Debug,
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> Read<Exclusive, BecauseExclusive> 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: 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: 184 bytes