Skip to main content

MappedFrozen

Struct MappedFrozen 

Source
pub struct MappedFrozen { /* private fields */ }
Expand description

Memory-mapped read view of one frozen group snapshot file.

Clones share one mapping through the reference count, so snapshotting the handle for a reader is cheap and the mapping outlives snapshot file replacement while readers hold it. The query surface mirrors [ImmutableCsr] so variant dispatch treats both identically; writes are rejected the same way.

Implementations§

Source§

impl MappedFrozen

Source

pub fn has_valued_entries(&self) -> bool

Whether this snapshot carries a bundled inline value column.

Only sidecars written from valued frozen groups do; the value readers below return inert defaults otherwise.

Source

pub fn hot_at(&self, idx: usize) -> Option<HotNbr>

Hot half at a packed index, decoded on demand from the mapping.

Source

pub fn cold_at(&self, idx: usize) -> Option<ColdStamps>

Cold half at a packed index, decoded on demand from the mapping.

Source

pub fn slot_at(&self, idx: usize) -> Option<Nbr>

Assembled slot copy at a packed index.

Source§

impl MappedFrozen

Source

pub fn iter(&self, ts: u64) -> MappedFrozenIterator ⓘ

Iterate timestamp-visible entries across all rows without materializing any row: each item decodes one slot on demand from the mapping.

Source

pub fn iter_all(&self) -> MappedFrozenIterator ⓘ

Iterate every physically stored entry, including tombstoned ones.

Source

pub fn iter_edges_of(&self, src_vid: u32, ts: u64) -> MappedFrozenRowIter ⓘ

Iterate timestamp-visible entries of one row without allocating.

Detached-snapshot contract: the snapshot file embeds the full create/delete stamp history, so point-in-time reads inside the snapshot are decided from the embedded stamps alone, without the table version authority. Live tables must never use this path for visibility; they decide through EdgeStore::is_visible.

Source§

impl MappedFrozen

Source

pub fn open(path: &Path) -> Result<MappedFrozen, StorageError>

Open and validate a snapshot file. Any structural problem is an error; callers fall back to the authoritative checkpoint.

Source

pub fn open_with_intent( path: &Path, intent: MemoryIntent, ) -> Result<MappedFrozen, StorageError>

Open and validate a snapshot file under a declared memory intent.

ReadSnapshot explicitly requests transparent huge pages on Linux for the read-only scan-heavy mapping; BulkLoad and HeapDefault skip the hint so ingest and default heap paths stay on base pages. Every hint is best-effort: rejection falls back to base pages without failing the open.

Source

pub fn open_or_rebuild( path: &Path, frozen: &ImmutableCsr, ) -> Result<MappedFrozen, StorageError>

Open the snapshot file, rebuilding it from frozen when it is missing or fails validation.

Source

pub fn vertex_capacity(&self) -> usize

Row count of the mapped table.

Source

pub fn edge_count(&self) -> u64

Live edge count stored at write time.

Source§

impl MappedFrozen

Source

pub fn used_memory_size(&self) -> usize

Approximate owned memory: the mapping itself lives in the page cache and is shared, so only the rebuilt offsets and the handle count.

Source

pub fn topology_encoding_report( &self, ) -> Vec<(String, TopologyColumnEncoding, usize, usize)>

Encoding report for the persisted neighbor columns, same shape as the heap frozen report.

Offline use only: decodes every column once. Never call on the query path; row scans use the bulk slice fills instead.

Source

pub fn dump(&self) -> Vec<u8> ⓘ

Authoritative checkpoint bytes rebuilt from the mapping: same layout as the heap frozen dump, so a mapped group flushes indistinguishably from a heap frozen group. Valued sidecars rebuild the value column and validity bytes the same way.

Source

pub fn dump_into(&self, out: &mut Vec<u8>)

Borrow-based authoritative dump without an intermediate owned buffer.

Source

pub fn dump_into_with_scratch( &self, out: &mut Vec<u8>, scratch: &mut CsrDumpScratch, )

Authoritative dump reusing caller-owned column buffers.

Source§

impl MappedFrozen

Source

pub fn row_degree(&self, src_vid: u32) -> usize

Row length of one vertex. Out-of-range rows report zero.

Source

pub fn is_row_sorted(&self, _src_vid: u32) -> bool

Mapped rows inherit the frozen sort order.

Source

pub fn visit_threshold<F>( &self, src_vid: u32, lower: Option<(u32, i64)>, upper: Option<(u32, i64)>, f: F, )
where F: FnMut(Nbr) -> bool,

Visit live entries whose (endpoint, rank) key falls in the inclusive [lower, upper] range. The mapped row is sorted, so the window is bisected before the liveness filter.

Source

pub fn fill_threshold_into( &self, src_vid: u32, lower: Option<(u32, i64)>, upper: Option<(u32, i64)>, out: &mut Vec<Nbr>, )

Fill a caller buffer with the same range content as visit_threshold.

Source

pub fn edges_of(&self, src_vid: u32, ts: u64) -> Vec<Nbr>

Timestamp-filtered read of one row.

Test and offline use; production traversals use iter_edges_of or fill_physical_into instead of this allocating accessor.

Source

pub fn fill_visible_into(&self, src_vid: u32, ts: u64, out: &mut Vec<Nbr>)

Fill a caller buffer with the timestamp-visible entries of one row.

Same filtered content as edges_of without the per-row allocation. Columns are sliced once per row and decoded in one pass.

Source

pub fn get_edge(&self, src_vid: u32, dst: VertexId, ts: u64) -> Option<Nbr>

First timestamp-visible entry matching an endpoint key: key-range bisection plus in-range timestamp filter, same rule as the heap form.

Source

pub fn get_edge_physical(&self, src_vid: u32, dst: VertexId) -> Option<Nbr>

First live entry matching an endpoint key without consulting snapshots.

Source

pub fn physical_edges_of(&self, src_vid: u32) -> Vec<Nbr>

Every physically stored entry of one row without timestamp filtering.

Test and offline use; production scans use fill_physical_into or the visitor paths instead of this allocating accessor.

Source

pub fn fill_physical_into(&self, src_vid: u32, out: &mut Vec<Nbr>)

Fill a caller buffer with every physically stored entry of one row.

Columns are sliced once per row and decoded in one pass instead of one bounds-checked scalar read per slot.

Source

pub fn visit_physical<F>(&self, src_vid: u32, f: F)
where F: FnMut(Nbr) -> bool,

Visit every physically stored entry of one row without allocating.

Decodes from one slice per column instead of one bounds-checked scalar read per slot.

Source

pub fn visit_hot<F>(&self, src_vid: u32, f: F)
where F: FnMut(HotNbr) -> bool,

Visit every physically stored hot half of one row without allocating and without touching the stamp columns.

Decodes from one slice per topology column instead of one scalar read per slot.

Source

pub fn nbr_at_offset(&self, src_vid: u32, offset: i32) -> Option<Nbr>

Read-only view of one packed slot without mutating state.

Source

pub fn has_physical_entries(&self, vid: u32) -> bool

Whether one row holds any physically stored entry.

Source

pub fn primary_contains(&self, src_vid: u32, edge_id: EdgeId) -> bool

Whether one row holds edge_id.

Source

pub fn bundled_value_by_edge_id( &self, src_vid: u32, edge_id: EdgeId, ) -> Option<(u64, bool)>

Read the inline value of one edge by id within its source row.

Mapped half of the frozen paired traversal: resolve the edge from the topology walk first, then read its value here. Sidecars without a value column still resolve the edge but report a NULL slot.

Source

pub fn bundled_value_by_endpoint( &self, src_vid: u32, endpoint: u32, ) -> Option<(u64, bool)>

Read the inline value of the first physical entry for one endpoint.

First-match walk mirroring the heap accessor: tombstones are physical entries and may match.

Source

pub fn visit_physical_with_values<F>(&self, src_vid: u32, f: F)
where F: FnMut(Nbr, Option<u64>) -> bool,

Visit every physically stored entry of one row with its inline value (None for NULL slots).

Source

pub fn any_valid_values(&self) -> bool

Whether any slot holds a valid inline value.

Source

pub fn locate_edge( &self, src_vid: u32, edge_id: EdgeId, ) -> Option<(EdgePosition, Nbr)>

Locate the first entry with edge_id, returning its packed slot.

Source

pub fn vertex_census(&self, vid: u32) -> (usize, usize, usize)

Physical entry census of one row: (live, dead, capacity).

Source

pub fn reclaimable_count(&self, _vid: u32, _cutoff: u64) -> usize

Mapped groups are never reclaimed; maintenance skips them like frozen.

Trait Implementations§

Source§

impl Clone for MappedFrozen

Source§

fn clone(&self) -> MappedFrozen

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl CsrBase for MappedFrozen

Source§

fn vertex_capacity(&self) -> usize

Concurrency contract: row stores carry no internal locks. Concurrent reads are safe while no writer holds exclusive access, but any concurrent mutation requires caller-side mutual exclusion. The Send + Sync bounds express single-writer transfer across threads, not lock-free concurrent writes. Multi-core scaling comes from shard-level parallelism over NodeGroup shards above this trait; the CSR lock model itself stays single-writer with no row locks.
Source§

fn edge_count(&self) -> u64

Source§

fn dump(&self) -> Vec<u8> ⓘ

Source§

fn dump_into(&self, out: &mut Vec<u8>)

Append the same bytes as dump into out without an intermediate owned buffer, so checkpoint writes borrow the live topology instead of cloning it for serialization.
Source§

fn load(&mut self, _data: &[u8]) -> Result<(), StorageError>

Source§

impl Debug for MappedFrozen

Source§

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

Formats the value using the given formatter. Read more
Source§

impl MutableCsrTrait for MappedFrozen

Source§

fn insert_edge( &mut self, _src_vid: u32, _dst: VertexId, _edge_id: EdgeId, _ts: u64, ) -> Result<(), StorageError>

Insert an edge. Read more
Source§

fn delete_edge( &mut self, _src_vid: u32, _edge_id: EdgeId, _ts: u64, ) -> Result<bool, StorageError>

Delete an edge by edge_id. Read more
Source§

fn delete_edge_by_dst( &mut self, _src_vid: u32, _dst: VertexId, _ts: u64, ) -> usize

Delete all edges matching (src, dst) with full-match semantics. Read more
Source§

fn locate_edge( &self, src_vid: u32, edge_id: EdgeId, ) -> Option<(EdgePosition, Nbr)>

Locate one stored edge, returning its row position and copy. Read more
Source§

fn delete_edge_at_position( &mut self, _src_vid: u32, _position: EdgePosition, _expected: EdgeId, _ts: u64, ) -> Result<bool, StorageError>

Delete the edge at position when it still holds expected id. Read more
Source§

fn revert_delete_at_position( &mut self, _src_vid: u32, _position: EdgePosition, _expected: EdgeId, _ts: u64, ) -> bool

Revert the deletion at position when it still holds expected id. Read more
Source§

fn delete_edge_by_offset( &mut self, _src_vid: u32, _offset: i32, _ts: u64, ) -> Result<bool, StorageError>

Delete an edge by its offset position in the primary block. Read more
Source§

fn revert_delete_by_offset( &mut self, _src_vid: u32, _offset: i32, _ts: u64, ) -> bool

Revert a deleted edge by its offset position. Read more
Source§

fn nbr_at_offset(&self, src_vid: u32, offset: i32) -> Option<Nbr>

Read-only view of one primary slot for offset identity checks.
Source§

fn get_edge_physical(&self, src_vid: u32, dst: VertexId) -> Option<Nbr>

Locate the first live edge by endpoint without consulting snapshots. Read more
Source§

fn physical_edges_of(&self, src_vid: u32) -> Vec<Nbr>

Every physically stored entry of one vertex without timestamp filtering. Read more
Source§

fn fill_physical_into(&self, src_vid: u32, out: &mut Vec<Nbr>)

Fill a caller buffer with every physically stored entry of one vertex. Read more
Source§

fn has_physical_entries(&self, vid: u32) -> bool

Whether one vertex holds any physically stored entry.
Source§

fn primary_contains(&self, src_vid: u32, edge_id: EdgeId) -> bool

Whether the primary row of one vertex holds edge_id.
Source§

fn rollback_insert(&mut self, _src_vid: u32, _edge_id: EdgeId) -> bool

Erase one just-inserted edge for insert rollback (no tombstone trace). Read more
Source§

fn revert_delete_by_edge_id( &mut self, _src_vid: u32, _edge_id: EdgeId, _ts: u64, ) -> bool

Revert a deletion by edge id if it happened at or before ts. Read more
Source§

fn get_edge(&self, src_vid: u32, dst: VertexId, ts: u64) -> Option<Nbr>

Get a specific edge by source and destination. Test-only row-stamp filter; production reads go through the version authority.
Source§

fn edges_of(&self, src_vid: u32, ts: u64) -> Vec<Nbr>

Get all valid edges of a vertex at the given timestamp. Test-only row-stamp filter; production reads go through the version authority. Test and offline use; production traversals use the visitor or caller-buffer fill paths instead of this allocating accessor.
Source§

fn compact_vertex_with_reporting( &mut self, _vid: u32, _cutoff: u64, _on_edge_removed: &mut dyn FnMut(EdgeId, u64), ) -> usize

Reclaim one vertex in place, dropping entries eligible for collection at cutoff and tightening live entries without touching other rows. Read more
Source§

fn reclaimable_count(&self, _vid: u32, _cutoff: u64) -> usize

Count entries of one vertex that are reclaimable at cutoff. Read more
Source§

fn vertex_needs_compact(&self, _vid: u32, _cutoff: u64) -> bool

Whether one vertex holds anything reclaimable at cutoff.
Source§

fn vertex_census(&self, vid: u32) -> (usize, usize, usize)

Physical entry census of one vertex: (live, dead, capacity). Read more
Source§

fn vertex_reclaim_probe(&self, vid: u32, _cutoff: u64) -> (usize, usize)

Single-walk reclaim probe of one vertex: (dead, reclaimable). Read more
Source§

fn row_gap(&self, _vid: u32) -> usize

Reserved primary slots minus live primary entries of one row. Read more
Source§

fn row_density(&self, _vid: u32) -> f32

Live primary entries per unit of reserved primary capacity. Read more
Source§

fn rebalance_row(&mut self, _vid: u32) -> bool

Rebalance one row in place, pulling overflow entries into primary gaps and repacking leftover overflow. Returns true when the row no longer holds overflow. Strategies without rows report true.
Source§

fn used_memory_size(&self) -> usize

Return the approximate memory usage in bytes.
Source§

fn delete_edge_by_dst_reporting( &mut self, src_vid: u32, dst: VertexId, ts: u64, _on_deleted: &mut dyn FnMut(EdgeId), ) -> usize

Delete all edges matching (src, dst), reporting every stamped id. Read more
Source§

fn delete_edge_by_dst_reporting_positioned( &mut self, src_vid: u32, dst: VertexId, ts: u64, on_deleted: &mut dyn FnMut(EdgeId, Option<EdgePosition>), ) -> usize

Delete all edges matching (src, dst), reporting each stamped id with its row position. 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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
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> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,

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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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