pub struct StorageCtx;Expand description
Thread-local storage accessor that implements PrecompileStorageProvider without the trait bound.
This is the only type that exposes access to the thread-local STORAGE static.
§Important
Since it provides access to the current thread-local storage context, it MUST be used within
a StorageCtx::enter closure.
§Sync with PrecompileStorageProvider
This type mirrors PrecompileStorageProvider methods but with split mutability:
- Read operations (staticcall) take
&self - Write operations take
&mut self
Implementations§
Source§impl StorageCtx
impl StorageCtx
Sourcepub fn enter<S, R>(storage: &mut S, f: impl FnOnce() -> R) -> Rwhere
S: PrecompileStorageProvider,
pub fn enter<S, R>(storage: &mut S, f: impl FnOnce() -> R) -> Rwhere
S: PrecompileStorageProvider,
Enter storage context. All storage operations must happen within the closure.
§IMPORTANT
The caller must ensure that:
- Only one
entercall is active at a time, in the same thread. - If multiple storage providers are instantiated in parallel threads, they CANNOT point to the same storage addresses.
Sourcefn with_storage<F, R>(f: F) -> Rwhere
F: FnOnce(&mut dyn PrecompileStorageProvider) -> R,
fn with_storage<F, R>(f: F) -> Rwhere
F: FnOnce(&mut dyn PrecompileStorageProvider) -> R,
Execute an infallible function with access to the current thread-local storage provider.
§Panics
Panics if no storage context is set.
Sourcefn try_with_storage<F, R>(f: F) -> Result<R>
fn try_with_storage<F, R>(f: F) -> Result<R>
Execute a (fallible) function with access to the current thread-local storage provider.
Sourcepub fn with_account_info<T>(
&self,
address: Address,
f: impl FnMut(&AccountInfo) -> Result<T>,
) -> Result<T>
pub fn with_account_info<T>( &self, address: Address, f: impl FnMut(&AccountInfo) -> Result<T>, ) -> Result<T>
Executes a closure with access to the account info, returning the closure’s result.
This is an ergonomic wrapper that flattens the Result, avoiding double ?.
Sourcepub fn beneficiary(&self) -> Address
pub fn beneficiary(&self) -> Address
Returns the current block beneficiary (coinbase).
Sourcepub fn block_number(&self) -> u64
pub fn block_number(&self) -> u64
Returns the current block number.
Sourcepub fn set_code(&mut self, address: Address, code: Bytecode) -> Result<()>
pub fn set_code(&mut self, address: Address, code: Bytecode) -> Result<()>
Sets the bytecode at the given address.
Sourcepub fn sload(&self, address: Address, key: U256) -> Result<U256>
pub fn sload(&self, address: Address, key: U256) -> Result<U256>
Performs an SLOAD operation (persistent storage read).
Sourcepub fn tload(&self, address: Address, key: U256) -> Result<U256>
pub fn tload(&self, address: Address, key: U256) -> Result<U256>
Performs a TLOAD operation (transient storage read).
Sourcepub fn sstore(&mut self, address: Address, key: U256, value: U256) -> Result<()>
pub fn sstore(&mut self, address: Address, key: U256, value: U256) -> Result<()>
Performs an SSTORE operation (persistent storage write).
Sourcepub fn tstore(&mut self, address: Address, key: U256, value: U256) -> Result<()>
pub fn tstore(&mut self, address: Address, key: U256, value: U256) -> Result<()>
Performs a TSTORE operation (transient storage write).
Sourcepub fn emit_event(&mut self, address: Address, event: LogData) -> Result<()>
pub fn emit_event(&mut self, address: Address, event: LogData) -> Result<()>
Emits an event from the given contract address.
Sourcepub fn refund_gas(&mut self, gas: i64)
pub fn refund_gas(&mut self, gas: i64)
Adds refund to the gas refund counter.
Sourcepub fn gas_refunded(&self) -> i64
pub fn gas_refunded(&self) -> i64
Returns the gas refunded so far.
Sourcepub fn spec(&self) -> TempoHardfork
pub fn spec(&self) -> TempoHardfork
Returns the currently active hardfork.
Sourcepub fn checkpoint(&mut self) -> CheckpointGuard
pub fn checkpoint(&mut self) -> CheckpointGuard
Creates a journal checkpoint and returns a RAII guard.
All state mutations after this call will be atomically
reverted if the guard is dropped without calling
CheckpointGuard::commit.
§Panics
Panics if no storage context is set.
Sourcepub fn deduct_gas(&mut self, gas: u64) -> Result<()>
pub fn deduct_gas(&mut self, gas: u64) -> Result<()>
Deducts gas from the remaining gas and returns an error if insufficient.
Sourcepub fn keccak256(&self, data: &[u8]) -> Result<B256>
pub fn keccak256(&self, data: &[u8]) -> Result<B256>
Computes keccak256 and charges the appropriate gas.
Prefer this over naked keccak256 to ensure gas is accounted for.
Sourcepub fn recover_signer(
&self,
digest: B256,
v: u8,
r: B256,
s: B256,
) -> Result<Option<Address>>
pub fn recover_signer( &self, digest: B256, v: u8, r: B256, s: B256, ) -> Result<Option<Address>>
Recovers the signer address from an ECDSA signature and charges ecrecover gas.
As per TIP-1004, it only accepts v values of 27 or 28 (no 0/1 normalization).
Returns Ok(None) on invalid signatures; callers map to domain-specific errors.
Source§impl<'evm> StorageCtx
impl<'evm> StorageCtx
Sourcepub fn enter_evm<J, R>(
journal: &'evm mut J,
block_env: &'evm dyn Block,
cfg: &CfgEnv<TempoHardfork>,
tx_env: &'evm impl Transaction,
f: impl FnOnce() -> R,
) -> Rwhere
J: JournalTr<Database: Database> + Debug,
pub fn enter_evm<J, R>(
journal: &'evm mut J,
block_env: &'evm dyn Block,
cfg: &CfgEnv<TempoHardfork>,
tx_env: &'evm impl Transaction,
f: impl FnOnce() -> R,
) -> Rwhere
J: JournalTr<Database: Database> + Debug,
Generic entry point for EVM-like environments. Sets up the storage provider and executes a closure within that context.
Sourcepub fn enter_precompile<J, P, R>(
journal: &'evm mut J,
block_env: &'evm dyn Block,
cfg: &CfgEnv<TempoHardfork>,
tx_env: &'evm impl Transaction,
f: impl FnOnce(P) -> R,
) -> R
pub fn enter_precompile<J, P, R>( journal: &'evm mut J, block_env: &'evm dyn Block, cfg: &CfgEnv<TempoHardfork>, tx_env: &'evm impl Transaction, f: impl FnOnce(P) -> R, ) -> R
Entry point for a “canonical” precompile (with unique known address).
Source§impl StorageCtx
impl StorageCtx
Sourcefn as_hashmap(&self) -> &mut HashMapStorageProvider
Available on crate features test-utils only.
fn as_hashmap(&self) -> &mut HashMapStorageProvider
test-utils only.Returns a mutable reference to the underlying HashMapStorageProvider.
NOTE: takes a non-mutable reference because it’s internal. The mutability of the storage operation is determined by the public function.
Sourcepub fn get_account_info(&self, address: Address) -> Option<&AccountInfo>
Available on crate features test-utils only.
pub fn get_account_info(&self, address: Address) -> Option<&AccountInfo>
test-utils only.NOTE: assumes storage tests always use the HashMapStorageProvider
Sourcepub fn get_events(&self, address: Address) -> &Vec<LogData>
Available on crate features test-utils only.
pub fn get_events(&self, address: Address) -> &Vec<LogData>
test-utils only.NOTE: assumes storage tests always use the HashMapStorageProvider
Sourcepub fn set_nonce(&mut self, address: Address, nonce: u64)
Available on crate features test-utils only.
pub fn set_nonce(&mut self, address: Address, nonce: u64)
test-utils only.NOTE: assumes storage tests always use the HashMapStorageProvider
Sourcepub fn set_timestamp(&mut self, timestamp: U256)
Available on crate features test-utils only.
pub fn set_timestamp(&mut self, timestamp: U256)
test-utils only.NOTE: assumes storage tests always use the HashMapStorageProvider
Sourcepub fn set_beneficiary(&mut self, beneficiary: Address)
Available on crate features test-utils only.
pub fn set_beneficiary(&mut self, beneficiary: Address)
test-utils only.NOTE: assumes storage tests always use the HashMapStorageProvider
Sourcepub fn set_block_number(&mut self, block_number: u64)
Available on crate features test-utils only.
pub fn set_block_number(&mut self, block_number: u64)
test-utils only.NOTE: assumes storage tests always use the HashMapStorageProvider
Sourcepub fn set_spec(&mut self, spec: TempoHardfork)
Available on crate features test-utils only.
pub fn set_spec(&mut self, spec: TempoHardfork)
test-utils only.NOTE: assumes storage tests always use the HashMapStorageProvider
Sourcepub fn clear_transient(&mut self)
Available on crate features test-utils only.
pub fn clear_transient(&mut self)
test-utils only.NOTE: assumes storage tests always use the HashMapStorageProvider
Sourcepub fn clear_events(&mut self, address: Address)
Available on crate features test-utils only.
pub fn clear_events(&mut self, address: Address)
test-utils only.NOTE: assumes storage tests always use the HashMapStorageProvider
USAGE: TIP20Setup automatically clears events of the configured
contract when apply() is called, unless explicitly asked no to.
Sourcepub fn has_bytecode(&self, address: Address) -> Result<bool>
Available on crate features test-utils only.
pub fn has_bytecode(&self, address: Address) -> Result<bool>
test-utils only.Checks if a contract at the given address has bytecode deployed.
Trait Implementations§
Source§impl Clone for StorageCtx
impl Clone for StorageCtx
Source§fn clone(&self) -> StorageCtx
fn clone(&self) -> StorageCtx
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for StorageCtx
impl Debug for StorageCtx
Source§impl Default for StorageCtx
impl Default for StorageCtx
Source§fn default() -> StorageCtx
fn default() -> StorageCtx
impl Copy for StorageCtx
Auto Trait Implementations§
impl Freeze for StorageCtx
impl RefUnwindSafe for StorageCtx
impl Send for StorageCtx
impl Sync for StorageCtx
impl Unpin for StorageCtx
impl UnsafeUnpin for StorageCtx
impl UnwindSafe for StorageCtx
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
impl<T> Conv for T
§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>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> 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> 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,
propagate-header only.§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,
add-extension only.§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,
map-request-body only.§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,
map-response-body only.§fn compression(self) -> Compression<Self>where
Self: Sized,
fn compression(self) -> Compression<Self>where
Self: Sized,
compression-br or compression-deflate or compression-gzip or compression-zstd only.§fn decompression(self) -> Decompression<Self>where
Self: Sized,
fn decompression(self) -> Decompression<Self>where
Self: Sized,
decompression-br or decompression-deflate or decompression-gzip or decompression-zstd only.§fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
trace only.§fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
trace only.§fn follow_redirects(self) -> FollowRedirect<Self>where
Self: Sized,
fn follow_redirects(self) -> FollowRedirect<Self>where
Self: Sized,
follow-redirect only.§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,
sensitive-headers only.§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,
sensitive-headers only.§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,
sensitive-headers only.§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,
set-header only.§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,
set-header only.§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,
set-header only.§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,
set-header only.§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,
set-header only.§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,
set-header only.§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,
request-id only.§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,
request-id only.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,
request-id only.§fn propagate_x_request_id(self) -> PropagateRequestId<Self>where
Self: Sized,
fn propagate_x_request_id(self) -> PropagateRequestId<Self>where
Self: Sized,
request-id only.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,
catch-panic only.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,
limit only.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,
normalize-path only.§fn append_trailing_slash(self) -> NormalizePath<Self>where
Self: Sized,
fn append_trailing_slash(self) -> NormalizePath<Self>where
Self: Sized,
normalize-path only.§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>
impl<T> ErasedDestructor for Twhere
T: 'static,
impl<T> MaybeDebug for Twhere
T: Debug,
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: 0 bytes