pub struct JitState { /* private fields */ }Expand description
The Tier-2 state of one runtime.
Owned by that runtime’s Tiers; see the module docs for the split
between this and the handful of genuinely process-wide items below.
Implementations§
Source§impl JitState
impl JitState
Sourcepub fn install_backend(&self, backend: Arc<dyn JitBackend>)
pub fn install_backend(&self, backend: Arc<dyn JitBackend>)
Attach a JIT compiler to this runtime. Idempotent: the first backend installed wins, later attempts are ignored.
Sourcepub fn backend(&self) -> Option<&Arc<dyn JitBackend>>
pub fn backend(&self) -> Option<&Arc<dyn JitBackend>>
This runtime’s JIT compiler, or None when no JIT is linked or
installed (dispatch then stops at Tier 1).
Sourcepub fn get_native_fn(&self, arity_id: u64) -> Option<(*const (), u64)>
pub fn get_native_fn(&self, arity_id: u64) -> Option<(*const (), u64)>
Return the compiled native function pointer and its reclamation epoch
for arity_id, if native code is currently published.
The caller must keep the returned epoch live (via
push_jit_frame) for the entire native call, so code unloading at a
stop-the-world safepoint does not free the backing module while it
executes.
Sourcepub fn store_native_fn(&self, arity_id: u64, ptr: *const (), epoch: u64)
pub fn store_native_fn(&self, arity_id: u64, ptr: *const (), epoch: u64)
Publish a compiled native function pointer and its reclamation epoch
for arity_id. Called by the JIT worker thread after successful
compilation.
Stores the epoch before the pointer (release ordering) so that any reader that observes a non-null pointer also observes the matching epoch.
Sourcepub fn take_native_epoch(&self, arity_id: u64) -> Option<u64>
pub fn take_native_epoch(&self, arity_id: u64) -> Option<u64>
Clear the published native pointer for arity_id and return the epoch
that was backing it, if any.
Called when a var holding this function is redefined: future dispatches fall back to the interpreter immediately (the pointer is nulled), and the returned epoch is handed to the code cache so the now-superseded module is reclaimed at the next safepoint once no frame is executing it. Also drops the per-arity table entry, keeping the table bounded across a long REPL session of redefinitions.
Sourcepub fn stale_native_code(&self, arity_id: u64)
pub fn stale_native_code(&self, arity_id: u64)
Null any published native code for arity_id (whole-function and OSR
entries) and hand the backing epochs to the code cache for reclamation.
Used by cross-defn invalidation and by the var-rebind hook; a no-op when nothing was compiled or no JIT is installed.
Sourcepub fn arg_type_profile(&self, arity_id: u64) -> Option<Vec<u8>>
pub fn arg_type_profile(&self, arity_id: u64) -> Option<Vec<u8>>
Snapshot the accumulated argument-type profile for arity_id (one
bitmask byte per IR parameter), if any calls were profiled.
Sourcepub fn record_call(
&self,
arity_id: u64,
ir_func: Arc<IrFunction>,
profile_args: &[Value],
)
pub fn record_call( &self, arity_id: u64, ir_func: Arc<IrFunction>, profile_args: &[Value], )
Record a call to arity_id.
Bumps the invocation counter and folds the call’s argument types into
the arity’s type profile (profile_args are the positional call
arguments matching the IR parameters; for a variadic arity the caller
passes only the fixed prefix, leaving the rest-list parameter
unprofiled — it is padded with PROFILE_OTHER so it can never be
specialized). When the counter crosses jit_threshold for the first
time, submits a compilation request to this runtime’s backend.
Called on every Tier-1 IR dispatch; must be cheap. Profiling stops once the compile is queued, so the steady-state cost is one atomic increment, one compare, and one relaxed load.
Sourcepub fn record_interp_call(&self, arity_id: u64) -> bool
pub fn record_interp_call(&self, arity_id: u64) -> bool
Record a Tier-0 (tree-walk) call to arity_id.
Returns true exactly when the warm threshold is crossed and no
lowering request has been enqueued yet — the caller should snapshot the
function and enqueue, then call Self::mark_lower_queued on success.
Uses >= so a failed enqueue (full queue) retries on the next call.
Sourcepub fn compile_queued(&self, arity_id: u64) -> bool
pub fn compile_queued(&self, arity_id: u64) -> bool
Whether a JIT compile has been queued (or published) for arity_id.
Used by the cold-IR sweep: an arity with an in-flight compile still
needs its IR as the deoptimization fallback.
Sourcepub fn pins_ir(&self, arity_id: u64) -> bool
pub fn pins_ir(&self, arity_id: u64) -> bool
Whether the cold-IR sweep must keep arity_id’s IR: native code is
published (the IR is its deoptimization fallback) or a compile is in
flight (the worker will need it).
Sourcepub fn lower_queued(&self, arity_id: u64) -> bool
pub fn lower_queued(&self, arity_id: u64) -> bool
Whether a background lowering request is already queued for arity_id.
Fast skip for the Tier-0 dispatch path.
Sourcepub fn mark_lower_queued(&self, arity_id: u64)
pub fn mark_lower_queued(&self, arity_id: u64)
Mark that a background lowering request was accepted for arity_id.
Sourcepub fn clear_lower_queued(&self, arity_id: u64)
pub fn clear_lower_queued(&self, arity_id: u64)
Clear the lowering-queued flag for arity_id, re-arming the dispatch
seam’s enqueue. Used by the lowering worker when it abandons an arity
after exhausting its rebind-retry budget.
Sourcepub fn on_ir_published(&self, arity_id: u64)
pub fn on_ir_published(&self, arity_id: u64)
Called by the lowering worker when it publishes IR for arity_id.
Restarts the invocation counter so the JIT threshold counts pure Tier-1
calls (and the argument-type profile gets a full window). Deliberately
does not drop the JitEntry: lower_queued must stay set, or the
Tier-0 path could re-enqueue between publish and the next IR dispatch.
Sourcepub fn evict_entry_if_cold(&self, arity_id: u64) -> bool
pub fn evict_entry_if_cold(&self, arity_id: u64) -> bool
Drop the JitEntry for arity_id iff it has no published native code
and no queued compile. Returns whether it was dropped.
Used by the cold-IR TTL sweep: dropping the entry clears the counters
and lower_queued, so an evicted function can re-warm from zero.
Sourcepub fn set_bootstrap_watermark(&self, w: u64)
pub fn set_bootstrap_watermark(&self, w: u64)
Record the bootstrap/user boundary: every arity id strictly below w
was defined before this runtime’s compiler became ready. Called by the
runtime builder with crate::interp::arity::next_arity_id().
Sourcepub fn is_bootstrap_arity(&self, arity_id: u64) -> bool
pub fn is_bootstrap_arity(&self, arity_id: u64) -> bool
Whether arity_id belongs to a bootstrap-era definition (excluded from
background lowering).
Sourcepub fn is_deopt_result(&self, result: *const Value) -> bool
pub fn is_deopt_result(&self, result: *const Value) -> bool
Whether result is the deopt sentinel returned by a failed entry
guard. Always false without a backend: nothing produced native code.
Sourcepub fn take_pending_exception(&self) -> Option<Value>
pub fn take_pending_exception(&self) -> Option<Value>
Take (and clear) the thread’s pending exception, if any.
Called by the JIT-native and OSR dispatch seams immediately after
native code returns. Returns None when no JIT is installed.
Sourcepub fn specialization_allowed(&self, arity_id: u64) -> bool
pub fn specialization_allowed(&self, arity_id: u64) -> bool
Whether arity_id may be compiled with type specializations.
Sourcepub fn record_deopt(&self, arity_id: u64)
pub fn record_deopt(&self, arity_id: u64)
Record an entry-guard deopt for arity_id.
Once the failure count crosses deopt_limit, the specialized code is
unpublished (dispatch falls back to Tier 1 immediately), its module is
handed to the code cache for reclamation, the arity is banned from
re-specialization, and its invocation counter restarts so the generic
recompile triggers through the ordinary hot path.
Sourcepub fn osr_poll(&self, arity_id: u64, header: u32) -> OsrPoll
pub fn osr_poll(&self, arity_id: u64, header: u32) -> OsrPoll
Poll for a compiled OSR entry for the loop at header in arity_id.
Sourcepub fn osr_request(&self, arity_id: u64, header: u32, ir_func: &IrFunction)
pub fn osr_request(&self, arity_id: u64, header: u32, ir_func: &IrFunction)
Request OSR compilation for the loop at header in arity_id.
Idempotent: only the first request per (arity_id, header) enqueues
(and pays for one IrFunction clone); with no JIT installed the entry
is marked failed so callers stop polling.
Sourcepub fn store_osr_fn(
&self,
arity_id: u64,
header: u32,
ptr: *const (),
epoch: u64,
live_ins: Vec<VarId>,
)
pub fn store_osr_fn( &self, arity_id: u64, header: u32, ptr: *const (), epoch: u64, live_ins: Vec<VarId>, )
Publish a compiled OSR entry. Called by the JIT worker thread.
Sourcepub fn mark_osr_failed(&self, arity_id: u64, header: u32)
pub fn mark_osr_failed(&self, arity_id: u64, header: u32)
Record that OSR compilation for (arity_id, header) declined or
failed, so interpreters stop polling and the loop stays at Tier 1.
Sourcepub fn take_osr_epochs(&self, arity_id: u64) -> Vec<u64>
pub fn take_osr_epochs(&self, arity_id: u64) -> Vec<u64>
Drop all OSR entries for arity_id (the owning var was rebound),
returning the epochs of published code so the caller can hand them to
the code cache for reclamation once no frame executes them.
Sourcepub fn stale_osr_code(&self, arity_id: u64)
pub fn stale_osr_code(&self, arity_id: u64)
Drop all OSR entries for arity_id and hand their published epochs to
the code cache for reclamation. Used by the cold-IR TTL sweep:
OSR-entry code is only reachable from Tier-1 interpretation of the
evicted IR, so it is equally cold. A no-op when nothing was compiled
or no JIT is installed.
Trait Implementations§
Source§impl Drop for JitState
Release this runtime’s compiled code when the runtime goes away.
impl Drop for JitState
Release this runtime’s compiled code when the runtime goes away.
The code cache is process-global (one executable-memory budget, one worker), so nothing else would ever look at these modules again: their only referents were the tables being dropped right here. Staling them hands them to the cache’s reclaim path, which frees each one at the next stop-the-world safepoint at which no thread is executing it — the same live-frame scan that guards redefinition, so a native frame still on some thread’s stack is as safe here as it is there.
Without this, a host that creates and drops runtimes — the case per-runtime tier state exists to support — would leak every module it ever compiled. The CLI, with one runtime for the life of the process, never reaches it.
Auto Trait Implementations§
impl !Freeze for JitState
impl !RefUnwindSafe for JitState
impl !UnwindSafe for JitState
impl Send for JitState
impl Sync for JitState
impl Unpin for JitState
impl UnsafeUnpin for JitState
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<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read moreSource§fn fg_rgb<const R: u8, const G: u8, const B: u8>(
&self,
) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>
fn fg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>
Source§fn bg_rgb<const R: u8, const G: u8, const B: u8>(
&self,
) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>
fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>
Source§fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>
fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>
Source§fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>
fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>
Source§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.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.