Skip to main content

ExecutionRuntime

Struct ExecutionRuntime 

Source
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: MemoryBudget

Per-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: AtomicUsize

Per-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

Source

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.

Source

pub fn default_budget() -> Self

Create a runtime with default settings (query_id = 0, default memory budget, no storage).

Source

pub fn query_id(&self) -> QueryIdentity

Source

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.

Source

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.

Source

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).

Source

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.

Source

pub fn registry_query_id(&self) -> Option<QueryId>

Return the registry-allocated query ID, if set.

Source

pub fn set_session_controller(&self, ctrl: Arc<SessionTransactionController>)

Set the session-level transaction controller for transaction commands.

Source

pub fn session_controller(&self) -> Option<Arc<SessionTransactionController>>

Return the session-level transaction controller, if set.

Source

pub fn set_parameter_values(&mut self, values: Arc<HashMap<String, Value>>)

Set the parameter name→value map for this execution instance.

Source

pub fn parameter_values(&self) -> Option<Arc<HashMap<String, Value>>>

Return the parameter name→value map, if bound.

Source

pub fn set_session_variable_values( &mut self, values: Arc<HashMap<String, Value>>, )

Set the session variable snapshot for this execution instance.

Source

pub fn session_variable_values(&self) -> Option<Arc<HashMap<String, Value>>>

Return the session variable snapshot, if bound.

Source

pub fn set_macro_manager(&mut self, manager: Option<Arc<MacroManager>>)

Set the macro catalog manager for this execution instance.

Source

pub fn macro_manager(&self) -> Option<Arc<MacroManager>>

Return the macro catalog manager, if bound.

Source

pub fn set_type_alias_manager(&mut self, manager: Option<Arc<TypeAliasManager>>)

Set the type-alias catalog manager for this execution instance.

Source

pub fn type_alias_manager(&self) -> Option<Arc<TypeAliasManager>>

Return the type-alias catalog manager, if bound.

Source

pub fn set_sequence_manager(&mut self, manager: Option<Arc<SequenceManager>>)

Set the sequence catalog manager for this execution instance.

Source

pub fn sequence_manager(&self) -> Option<Arc<SequenceManager>>

Return the sequence catalog manager, if bound.

Source

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.

Source

pub fn cte_table(&self, mangled_tag: &str) -> Option<Vec<Vec<Value>>>

Read the current working table published under a mangled CTE tag.

Source

pub fn clear_cte_table(&self, mangled_tag: &str)

Remove the working table published under a mangled CTE tag.

Source

pub fn set_transaction_scope(&mut self, scope: TransactionScope)

Set the transaction scope for this execution.

Source

pub fn transaction_scope(&self) -> Option<&TransactionScope>

Return the current transaction scope, if any.

Source

pub fn cancel_token_v2(&self) -> CancelToken

Return the typed CancelToken for cooperative cancellation.

Source

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.

Source

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.

Source

pub fn cancel_token(&self) -> CancelToken

Shared cancellation token for cooperative checks by operators and I/O.

Source

pub fn is_cancelled(&self) -> bool

Check whether the query has been cancelled (token or deadline).

Source

pub fn ensure_not_cancelled(&self) -> Result<(), QueryError>

Return an error if the query has been cancelled.

Source

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).

Source

pub fn cancel(&self)

Legacy cancel (no typed reason). Delegates to [cancel_with_reason] with CancelReason::UserKill.

Source

pub fn cancel_on_deadline(&self)

Enable deadline-based cancellation.

Source

pub fn set_deadline(&mut self, deadline: Option<Instant>)

Set or clear a deadline.

Source

pub fn profile(&self) -> &Arc<ProfileBoard> ⓘ

Source

pub fn register_operator( &self, op_profile: &OperatorProfile, ) -> Arc<ProfileEntry> ⓘ

Register an operator profile entry (called during open()).

Source

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.

Source

pub fn set_partition_count(&mut self, count: usize)

Set the number of partition arenas (must be ≥ 1).

Source

pub fn profile_start(&self)

Record that execution has started (profile timing).

Source

pub fn profile_end(&self)

Record that execution has ended.

Source

pub fn profile_add_rows(&self, count: u64)

Add rows to the profile counter.

Source

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.

Source

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.

Source

pub fn resource_owner(&self) -> &Arc<Mutex<ResourceOwner>> ⓘ

Source

pub fn on_cleanup<F>(&self, f: F)
where F: FnOnce() + Send + 'static,

Register a cleanup callback.

Source

pub fn release_resources(&self)

Release all owned resources.

Source

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.

Source

pub fn set_shared_scheduler(&self, scheduler: Option<Arc<SharedScheduler>>)

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.

Source

pub fn get_shared_scheduler(&self) -> Option<Arc<SharedScheduler>>

Return the shared scheduler, if set.

Source

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.

Source

pub fn set_spill_manager(&self, manager: Option<Arc<SpillManager>>)

Set the spill manager for this query execution.

Source

pub fn get_spill_manager(&self) -> Option<Arc<SpillManager>>

Access the spill manager.

Source

pub fn arena(&self) -> Option<&Arc<Mutex<Arena>>>

Return a reference to the bumpalo arena, if configured.

Source

pub fn columnar_stats(&self) -> Arc<ColumnarStats> ⓘ

Return the columnar fast-path counters shared with produced chunks.

Source

pub fn columnar_policy(&self) -> Option<Arc<ColumnarPolicy>>

Return the shared columnar layout policy, if injected.

Source

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).

Source

pub fn columnar_override(&self) -> QueryColumnarOverride

Per-query columnar override for this runtime.

Source

pub fn set_columnar_override(&mut self, query_override: QueryColumnarOverride)

Pin the columnar decision for this query only.

Source

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.

Source

pub fn reset_arena(&self)

Reset the bumpalo arena, freeing all temporary allocations.

Source

pub fn set_max_buffered_chunks(&self, chunks: usize)

Set the per-partition output channel capacity for parallel operators.

Trait Implementations§

Source§

impl Debug for ExecutionRuntime

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> Conv for T

Source§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
Source§

impl<T> FmtForward for T

Source§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
Source§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
Source§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
Source§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
Source§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
Source§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
Source§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
Source§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
Source§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pipe for T
where T: ?Sized,

Source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
Source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
Source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
Source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows 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
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows 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
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
Source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> Tap for T

Source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
Source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
Source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
Source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
Source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
Source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
Source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
Source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
Source§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
Source§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .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
where Self: BorrowMut<B>, B: ?Sized,

Calls .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
where Self: AsRef<R>, R: ?Sized,

Calls .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
where Self: AsMut<R>, R: ?Sized,

Calls .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
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
Source§

impl<T> TryConv for T

Source§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more