pub struct ExecutionRuntime {Show 15 fields
pub memory_budget: MemoryBudget,
pub worker_pool: Arc<Mutex<Option<Arc<dyn TaskScheduler>>>>,
pub max_buffered_chunks: AtomicUsize,
pub spill_manager: Arc<Mutex<Option<Arc<SpillManager>>>>,
pub storage: Option<Arc<RwLock<dyn QueryStorage>>>,
pub search: SearchContext,
pub state_arenas: Vec<Mutex<StateArenaSet>>,
pub parameter_values: Option<Arc<HashMap<String, Value>>>,
pub session_variable_values: Option<Arc<HashMap<String, Value>>>,
pub arena: Option<Arc<Mutex<Arena>>>,
pub feedback_history: Option<Arc<QueryFeedbackHistory>>,
pub macro_manager: Option<Arc<MacroManager>>,
pub type_alias_manager: Option<Arc<TypeAliasManager>>,
pub sequence_manager: Option<Arc<SequenceManager>>,
pub cte_tables: Arc<Mutex<HashMap<String, Vec<Vec<Value>>>>>,
/* private fields */
}Expand description
Per-query execution runtime shared across all operators.
Centralises cancellation, memory tracking, profiling, resource lifecycle, and query-registration so that operators do not each carry ad-hoc context.
unified cancellation via CancelToken
has been removed; operators check CancelToken::is_cancelled.
Fields§
§memory_budget: MemoryBudgetPer-query memory budget for blocking operators.
worker_pool: Arc<Mutex<Option<Arc<dyn TaskScheduler>>>>Query-level morsel worker pool for dynamic partition execution
Kept for backward compatibility.
Created when max_workers > 1 and no shared_scheduler is set;
None means serial fallback.
Behind a Mutex so the engine can set the pool after construction.
max_buffered_chunks: AtomicUsizePer-partition output channel capacity for parallel exchange/gather.
spill_manager: Arc<Mutex<Option<Arc<SpillManager>>>>Spill manager for offloading operator data to disk.
storage: Option<Arc<RwLock<dyn QueryStorage>>>Storage client for this query execution. Moved here from OperatorSpec so that the physical plan tree is truly immutable and cacheable without sharing storage handles.
search: SearchContext§state_arenas: Vec<Mutex<StateArenaSet>>Per-partition operator state arenas.
Indexed by partition_id so parallel workers do not contend on a
single lock. state_arenas[0] serves global / non-partitioned
operators.
Operators create/read/update their typed state during
open() / next() / close(), indexed by [PhysicalOperatorId]
stored in OperatorBase::physical_operator_id.
parameter_values: Option<Arc<HashMap<String, Value>>>Runtime parameter name→value map, bound at materialization time.
Operators read this to resolve Expression::Parameter references.
session_variable_values: Option<Arc<HashMap<String, Value>>>Runtime session variable name→value snapshot, bound at materialization
time. Operators read this to resolve Expression::SessionVariable
references.
arena: Option<Arc<Mutex<Arena>>>Per-query bumpalo arena for executor temporary allocations.
feedback_history: Option<Arc<QueryFeedbackHistory>>Shared query feedback history for collecting execution statistics.
Injected by the materializer from the query bindings; when set, the execution instance records estimated-vs-actual operator feedback here after execution completes (stats feedback loop).
macro_manager: Option<Arc<MacroManager>>Macro catalog manager (user-defined macros), shared engine-wide.
Injected by the materializer from the query bindings; read by DDL
operators executing CREATE/DROP MACRO and SHOW MACROS.
type_alias_manager: Option<Arc<TypeAliasManager>>Type-alias catalog manager (user-defined types), shared engine-wide.
Injected by the materializer from the query bindings; read by DDL
operators executing CREATE/DROP TYPE.
sequence_manager: Option<Arc<SequenceManager>>Sequence catalog manager (named sequences), shared engine-wide.
Injected by the materializer from the query bindings; read by DDL
operators executing CREATE/ALTER/DROP SEQUENCE and by the
curr_val / next_val expression functions.
cte_tables: Arc<Mutex<HashMap<String, Vec<Vec<Value>>>>>Working tables of enclosing recursive-CTE fixpoints, keyed by the
mangled CTE tag (crate::cte::mangle_cte_name).
Written by the fixpoint operator before each step iteration and cleared afterwards; read by CTE scan sources. Serial execution only (fixpoint fragments are never partitioned).
Implementations§
Source§impl ExecutionRuntime
impl ExecutionRuntime
Sourcepub fn new(
query_id: QueryIdentity,
memory_budget: MemoryBudget,
storage: Option<Arc<RwLock<dyn QueryStorage>>>,
search: SearchContext,
) -> Self
pub fn new( query_id: QueryIdentity, memory_budget: MemoryBudget, storage: Option<Arc<RwLock<dyn QueryStorage>>>, search: SearchContext, ) -> Self
Create a new execution runtime with the given query identity, memory budget, and optional storage client.
Sourcepub fn default_budget() -> Self
pub fn default_budget() -> Self
Create a runtime with default settings (query_id = 0, default memory budget, no storage).
pub fn query_id(&self) -> QueryIdentity
Sourcepub fn assign_query_id(&self, id: u64)
pub fn assign_query_id(&self, id: u64)
Override the query ID number after construction.
The factory initialises query_id.query_id to 0; the API layer assigns the
real server-side ID before the handle is returned to the caller.
Sourcepub fn set_query_manager(&self, qm: Arc<QueryManager>)
pub fn set_query_manager(&self, qm: Arc<QueryManager>)
Attach a QueryManager so that KILL QUERY, finish tracking, and progress forwarding work.
Uses interior mutability (&self) because the runtime is shared with
the executor tree before the assembly attaches the manager, so &mut
access is unavailable at that point.
Sourcepub fn finish_guard(&self) -> Option<QueryFinishGuard>
pub fn finish_guard(&self) -> Option<QueryFinishGuard>
Register this query with the attached QueryManager and return a
QueryFinishGuard that marks it finished on drop.
Returns None when no QueryManager is attached (non-fatal).
Sourcepub fn set_query_registry(&self, registry: Arc<QueryRegistry>, qid: QueryId)
pub fn set_query_registry(&self, registry: Arc<QueryRegistry>, qid: QueryId)
Attach a QueryRegistry and the allocated QueryId.
Interior mutability via Mutex: the runtime is shared with the
executor tree before registration, so &mut access is not available.
Sourcepub fn registry_query_id(&self) -> Option<QueryId>
pub fn registry_query_id(&self) -> Option<QueryId>
Return the registry-allocated query ID, if set.
Sourcepub fn set_session_controller(&self, ctrl: Arc<SessionTransactionController>)
pub fn set_session_controller(&self, ctrl: Arc<SessionTransactionController>)
Set the session-level transaction controller for transaction commands.
Sourcepub fn session_controller(&self) -> Option<Arc<SessionTransactionController>>
pub fn session_controller(&self) -> Option<Arc<SessionTransactionController>>
Return the session-level transaction controller, if set.
Sourcepub fn set_parameter_values(&mut self, values: Arc<HashMap<String, Value>>)
pub fn set_parameter_values(&mut self, values: Arc<HashMap<String, Value>>)
Set the parameter name→value map for this execution instance.
Sourcepub fn parameter_values(&self) -> Option<Arc<HashMap<String, Value>>>
pub fn parameter_values(&self) -> Option<Arc<HashMap<String, Value>>>
Return the parameter name→value map, if bound.
Sourcepub fn set_session_variable_values(
&mut self,
values: Arc<HashMap<String, Value>>,
)
pub fn set_session_variable_values( &mut self, values: Arc<HashMap<String, Value>>, )
Set the session variable snapshot for this execution instance.
Sourcepub fn session_variable_values(&self) -> Option<Arc<HashMap<String, Value>>>
pub fn session_variable_values(&self) -> Option<Arc<HashMap<String, Value>>>
Return the session variable snapshot, if bound.
Sourcepub fn set_macro_manager(&mut self, manager: Option<Arc<MacroManager>>)
pub fn set_macro_manager(&mut self, manager: Option<Arc<MacroManager>>)
Set the macro catalog manager for this execution instance.
Sourcepub fn macro_manager(&self) -> Option<Arc<MacroManager>>
pub fn macro_manager(&self) -> Option<Arc<MacroManager>>
Return the macro catalog manager, if bound.
Sourcepub fn set_type_alias_manager(&mut self, manager: Option<Arc<TypeAliasManager>>)
pub fn set_type_alias_manager(&mut self, manager: Option<Arc<TypeAliasManager>>)
Set the type-alias catalog manager for this execution instance.
Sourcepub fn type_alias_manager(&self) -> Option<Arc<TypeAliasManager>>
pub fn type_alias_manager(&self) -> Option<Arc<TypeAliasManager>>
Return the type-alias catalog manager, if bound.
Sourcepub fn set_sequence_manager(&mut self, manager: Option<Arc<SequenceManager>>)
pub fn set_sequence_manager(&mut self, manager: Option<Arc<SequenceManager>>)
Set the sequence catalog manager for this execution instance.
Sourcepub fn sequence_manager(&self) -> Option<Arc<SequenceManager>>
pub fn sequence_manager(&self) -> Option<Arc<SequenceManager>>
Return the sequence catalog manager, if bound.
Sourcepub fn set_cte_table(&self, mangled_tag: &str, rows: Vec<Vec<Value>>)
pub fn set_cte_table(&self, mangled_tag: &str, rows: Vec<Vec<Value>>)
Publish a recursive-CTE working table for the duration of one step iteration. Overwrites any previous table under the same mangled tag.
Sourcepub fn cte_table(&self, mangled_tag: &str) -> Option<Vec<Vec<Value>>>
pub fn cte_table(&self, mangled_tag: &str) -> Option<Vec<Vec<Value>>>
Read the current working table published under a mangled CTE tag.
Sourcepub fn clear_cte_table(&self, mangled_tag: &str)
pub fn clear_cte_table(&self, mangled_tag: &str)
Remove the working table published under a mangled CTE tag.
Sourcepub fn set_transaction_scope(&mut self, scope: TransactionScope)
pub fn set_transaction_scope(&mut self, scope: TransactionScope)
Set the transaction scope for this execution.
Sourcepub fn transaction_scope(&self) -> Option<&TransactionScope>
pub fn transaction_scope(&self) -> Option<&TransactionScope>
Return the current transaction scope, if any.
Sourcepub fn cancel_token_v2(&self) -> CancelToken
pub fn cancel_token_v2(&self) -> CancelToken
Return the typed CancelToken for cooperative cancellation.
Sourcepub fn note_transaction_conflict(&self)
pub fn note_transaction_conflict(&self)
Propagate a write-conflict failure of the current transaction.
Called by write operators when a storage access fails with a
conflict-classified error (write-write conflict, rollback-only). The
session controller is marked rollback-only so a later COMMIT is
rejected, and the shared cancellation token is cancelled with the
typed CancelReason::TransactionConflict reason — terminating any
pipeline stages of the same transaction that have not started yet.
Sourcepub fn set_cancel_token(&self, token: CancelToken)
pub fn set_cancel_token(&self, token: CancelToken)
Adopt an externally-owned cancellation token.
Called at instantiation so the runtime, the query registry, and the
request-scoped [QueryContext] share one token (single source for
KILL QUERY / cancellation). Interior mutability via Mutex because
the executor tree holds an Arc clone of the runtime by the time
instantiation wires the token.
Sourcepub fn cancel_token(&self) -> CancelToken
pub fn cancel_token(&self) -> CancelToken
Shared cancellation token for cooperative checks by operators and I/O.
Sourcepub fn is_cancelled(&self) -> bool
pub fn is_cancelled(&self) -> bool
Check whether the query has been cancelled (token or deadline).
Sourcepub fn ensure_not_cancelled(&self) -> Result<(), QueryError>
pub fn ensure_not_cancelled(&self) -> Result<(), QueryError>
Return an error if the query has been cancelled.
Sourcepub fn cancel_with_reason(&self, reason: CancelReason)
pub fn cancel_with_reason(&self, reason: CancelReason)
Cancel this query with a typed reason.
Sets the CancelToken, marks the query as Killed in the
attached QueryManager, and cancels the registry entry (if configured).
Sourcepub fn cancel(&self)
pub fn cancel(&self)
Legacy cancel (no typed reason). Delegates to [cancel_with_reason]
with CancelReason::UserKill.
Sourcepub fn cancel_on_deadline(&self)
pub fn cancel_on_deadline(&self)
Enable deadline-based cancellation.
Sourcepub fn set_deadline(&mut self, deadline: Option<Instant>)
pub fn set_deadline(&mut self, deadline: Option<Instant>)
Set or clear a deadline.
pub fn profile(&self) -> &Arc<ProfileBoard> ⓘ
Sourcepub fn register_operator(
&self,
op_profile: &OperatorProfile,
) -> Arc<ProfileEntry> ⓘ
pub fn register_operator( &self, op_profile: &OperatorProfile, ) -> Arc<ProfileEntry> ⓘ
Register an operator profile entry (called during open()).
Sourcepub fn state_arena_for(
&self,
partition_id: Option<usize>,
) -> &Mutex<StateArenaSet>
pub fn state_arena_for( &self, partition_id: Option<usize>, ) -> &Mutex<StateArenaSet>
Return a StateArenaSet mutex for the given partition.
Non-partitioned operators (partition_id == None) always map to
arena 0. Partitioned operators map to (partition_id + 1), with
fallback to the last arena when the partition count was under-estimated.
Sourcepub fn set_partition_count(&mut self, count: usize)
pub fn set_partition_count(&mut self, count: usize)
Set the number of partition arenas (must be ≥ 1).
Sourcepub fn profile_start(&self)
pub fn profile_start(&self)
Record that execution has started (profile timing).
Sourcepub fn profile_end(&self)
pub fn profile_end(&self)
Record that execution has ended.
Sourcepub fn profile_add_rows(&self, count: u64)
pub fn profile_add_rows(&self, count: u64)
Add rows to the profile counter.
Sourcepub fn set_progress_rows_interval(&self, rows_interval: u64)
pub fn set_progress_rows_interval(&self, rows_interval: u64)
Row cadence for query-progress notifications (0 disables).
Set alongside set_query_manager by the assembly that owns both the
executor and the QueryManager. Zero by default: unconfigured
runtimes never emit and pay a single relaxed atomic load per batch.
Sourcepub fn set_progress_identity(&self, session_id: i64, query_id: i64)
pub fn set_progress_identity(&self, session_id: i64, query_id: i64)
Identity reported in progress notifications, in the QueryManager
id space. A negative query id suppresses emission until the assembly
provides the real mapping between the two query identity schemes.
pub fn resource_owner(&self) -> &Arc<Mutex<ResourceOwner>> ⓘ
Sourcepub fn on_cleanup<F>(&self, f: F)
pub fn on_cleanup<F>(&self, f: F)
Register a cleanup callback.
Sourcepub fn release_resources(&self)
pub fn release_resources(&self)
Release all owned resources.
Sourcepub fn set_worker_pool(&self, pool: Option<MorselWorkerPool>)
pub fn set_worker_pool(&self, pool: Option<MorselWorkerPool>)
Set the morsel worker pool for this query.
When a shared scheduler is available via
set_shared_scheduler, this call is
ignored — the shared scheduler’s pool is used instead. Legacy support:
creates a per-query pool when no shared scheduler is configured.
Set the engine-level shared scheduler for this query.
When set, all parallel execution uses the shared worker pool instead
of per-query threads. The scheduler’s Arc<dyn TaskScheduler> is
injected into worker_pool so existing consumer code paths
(Exchange / Gather operators) continue to work unchanged.
Takes priority over any per-query pool that may have been set.
Return the shared scheduler, if set.
Sourcepub fn effective_worker_pool(&self) -> Option<Arc<dyn TaskScheduler>>
pub fn effective_worker_pool(&self) -> Option<Arc<dyn TaskScheduler>>
Return the effective worker pool — either from the shared scheduler,
or from the per-query pool, or None for serial fallback.
Sourcepub fn set_spill_manager(&self, manager: Option<Arc<SpillManager>>)
pub fn set_spill_manager(&self, manager: Option<Arc<SpillManager>>)
Set the spill manager for this query execution.
Sourcepub fn get_spill_manager(&self) -> Option<Arc<SpillManager>>
pub fn get_spill_manager(&self) -> Option<Arc<SpillManager>>
Access the spill manager.
Sourcepub fn arena(&self) -> Option<&Arc<Mutex<Arena>>>
pub fn arena(&self) -> Option<&Arc<Mutex<Arena>>>
Return a reference to the bumpalo arena, if configured.
Sourcepub fn columnar_stats(&self) -> Arc<ColumnarStats> ⓘ
pub fn columnar_stats(&self) -> Arc<ColumnarStats> ⓘ
Return the columnar fast-path counters shared with produced chunks.
Sourcepub fn columnar_policy(&self) -> Option<Arc<ColumnarPolicy>>
pub fn columnar_policy(&self) -> Option<Arc<ColumnarPolicy>>
Return the shared columnar layout policy, if injected.
Sourcepub fn set_columnar_policy(&mut self, policy: Option<Arc<ColumnarPolicy>>)
pub fn set_columnar_policy(&mut self, policy: Option<Arc<ColumnarPolicy>>)
Inject the shared columnar layout policy (owned by the optimizer engine; set by the materializer from the query bindings).
Sourcepub fn columnar_override(&self) -> QueryColumnarOverride
pub fn columnar_override(&self) -> QueryColumnarOverride
Per-query columnar override for this runtime.
Sourcepub fn set_columnar_override(&mut self, query_override: QueryColumnarOverride)
pub fn set_columnar_override(&mut self, query_override: QueryColumnarOverride)
Pin the columnar decision for this query only.
Sourcepub fn flush_columnar_stats_to_policy(&self)
pub fn flush_columnar_stats_to_policy(&self)
Merge this query’s columnar hit/miss counts into the shared policy.
Called once when the query finishes (materialized, streaming, and discard paths) so the adaptive gate learns across queries.
Sourcepub fn reset_arena(&self)
pub fn reset_arena(&self)
Reset the bumpalo arena, freeing all temporary allocations.
Sourcepub fn set_max_buffered_chunks(&self, chunks: usize)
pub fn set_max_buffered_chunks(&self, chunks: usize)
Set the per-partition output channel capacity for parallel operators.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for ExecutionRuntime
impl !RefUnwindSafe for ExecutionRuntime
impl !UnwindSafe for ExecutionRuntime
impl Send for ExecutionRuntime
impl Sync for ExecutionRuntime
impl Unpin for ExecutionRuntime
impl UnsafeUnpin for ExecutionRuntime
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
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§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.Source§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.Source§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.Source§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.Source§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.Source§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.Source§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.Source§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.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 moreSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§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 moreSource§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 moreSource§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
Source§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
Source§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.Source§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.Source§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.Source§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<T> Tap for T
impl<T> Tap for T
Source§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 moreSource§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 moreSource§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 moreSource§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 moreSource§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 moreSource§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 moreSource§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.Source§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.Source§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.Source§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.Source§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.Source§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.Source§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.