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
impl MappedFrozen
Sourcepub fn has_valued_entries(&self) -> bool
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.
Sourcepub fn hot_at(&self, idx: usize) -> Option<HotNbr>
pub fn hot_at(&self, idx: usize) -> Option<HotNbr>
Hot half at a packed index, decoded on demand from the mapping.
Sourcepub fn cold_at(&self, idx: usize) -> Option<ColdStamps>
pub fn cold_at(&self, idx: usize) -> Option<ColdStamps>
Cold half at a packed index, decoded on demand from the mapping.
Source§impl MappedFrozen
impl MappedFrozen
Sourcepub fn iter(&self, ts: u64) -> MappedFrozenIterator ⓘ
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.
Sourcepub fn iter_all(&self) -> MappedFrozenIterator ⓘ
pub fn iter_all(&self) -> MappedFrozenIterator ⓘ
Iterate every physically stored entry, including tombstoned ones.
Sourcepub fn iter_edges_of(&self, src_vid: u32, ts: u64) -> MappedFrozenRowIter ⓘ
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
impl MappedFrozen
Sourcepub fn open(path: &Path) -> Result<MappedFrozen, StorageError>
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.
Sourcepub fn open_with_intent(
path: &Path,
intent: MemoryIntent,
) -> Result<MappedFrozen, StorageError>
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.
Sourcepub fn open_or_rebuild(
path: &Path,
frozen: &ImmutableCsr,
) -> Result<MappedFrozen, StorageError>
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.
Sourcepub fn vertex_capacity(&self) -> usize
pub fn vertex_capacity(&self) -> usize
Row count of the mapped table.
Sourcepub fn edge_count(&self) -> u64
pub fn edge_count(&self) -> u64
Live edge count stored at write time.
Source§impl MappedFrozen
impl MappedFrozen
Sourcepub fn used_memory_size(&self) -> usize
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.
Sourcepub fn topology_encoding_report(
&self,
) -> Vec<(String, TopologyColumnEncoding, usize, usize)>
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.
Sourcepub fn dump(&self) -> Vec<u8> ⓘ
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.
Sourcepub fn dump_into(&self, out: &mut Vec<u8>)
pub fn dump_into(&self, out: &mut Vec<u8>)
Borrow-based authoritative dump without an intermediate owned buffer.
Sourcepub fn dump_into_with_scratch(
&self,
out: &mut Vec<u8>,
scratch: &mut CsrDumpScratch,
)
pub fn dump_into_with_scratch( &self, out: &mut Vec<u8>, scratch: &mut CsrDumpScratch, )
Authoritative dump reusing caller-owned column buffers.
Source§impl MappedFrozen
impl MappedFrozen
Sourcepub fn row_degree(&self, src_vid: u32) -> usize
pub fn row_degree(&self, src_vid: u32) -> usize
Row length of one vertex. Out-of-range rows report zero.
Sourcepub fn is_row_sorted(&self, _src_vid: u32) -> bool
pub fn is_row_sorted(&self, _src_vid: u32) -> bool
Mapped rows inherit the frozen sort order.
Sourcepub fn visit_threshold<F>(
&self,
src_vid: u32,
lower: Option<(u32, i64)>,
upper: Option<(u32, i64)>,
f: F,
)
pub fn visit_threshold<F>( &self, src_vid: u32, lower: Option<(u32, i64)>, upper: Option<(u32, i64)>, f: F, )
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.
Sourcepub fn fill_threshold_into(
&self,
src_vid: u32,
lower: Option<(u32, i64)>,
upper: Option<(u32, i64)>,
out: &mut Vec<Nbr>,
)
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.
Sourcepub fn edges_of(&self, src_vid: u32, ts: u64) -> Vec<Nbr>
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.
Sourcepub fn fill_visible_into(&self, src_vid: u32, ts: u64, out: &mut Vec<Nbr>)
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.
Sourcepub fn get_edge(&self, src_vid: u32, dst: VertexId, ts: u64) -> Option<Nbr>
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.
Sourcepub fn get_edge_physical(&self, src_vid: u32, dst: VertexId) -> Option<Nbr>
pub fn get_edge_physical(&self, src_vid: u32, dst: VertexId) -> Option<Nbr>
First live entry matching an endpoint key without consulting snapshots.
Sourcepub fn physical_edges_of(&self, src_vid: u32) -> Vec<Nbr>
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.
Sourcepub fn fill_physical_into(&self, src_vid: u32, out: &mut Vec<Nbr>)
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.
Sourcepub fn visit_physical<F>(&self, src_vid: u32, f: F)
pub fn visit_physical<F>(&self, src_vid: u32, f: F)
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.
Sourcepub fn visit_hot<F>(&self, src_vid: u32, f: F)
pub fn visit_hot<F>(&self, src_vid: u32, f: F)
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.
Sourcepub fn nbr_at_offset(&self, src_vid: u32, offset: i32) -> Option<Nbr>
pub fn nbr_at_offset(&self, src_vid: u32, offset: i32) -> Option<Nbr>
Read-only view of one packed slot without mutating state.
Sourcepub fn has_physical_entries(&self, vid: u32) -> bool
pub fn has_physical_entries(&self, vid: u32) -> bool
Whether one row holds any physically stored entry.
Sourcepub fn primary_contains(&self, src_vid: u32, edge_id: EdgeId) -> bool
pub fn primary_contains(&self, src_vid: u32, edge_id: EdgeId) -> bool
Whether one row holds edge_id.
Sourcepub fn bundled_value_by_edge_id(
&self,
src_vid: u32,
edge_id: EdgeId,
) -> Option<(u64, bool)>
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.
Sourcepub fn bundled_value_by_endpoint(
&self,
src_vid: u32,
endpoint: u32,
) -> Option<(u64, bool)>
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.
Sourcepub fn visit_physical_with_values<F>(&self, src_vid: u32, f: F)
pub fn visit_physical_with_values<F>(&self, src_vid: u32, f: F)
Visit every physically stored entry of one row with its inline value
(None for NULL slots).
Sourcepub fn any_valid_values(&self) -> bool
pub fn any_valid_values(&self) -> bool
Whether any slot holds a valid inline value.
Sourcepub fn locate_edge(
&self,
src_vid: u32,
edge_id: EdgeId,
) -> Option<(EdgePosition, Nbr)>
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.
Sourcepub fn vertex_census(&self, vid: u32) -> (usize, usize, usize)
pub fn vertex_census(&self, vid: u32) -> (usize, usize, usize)
Physical entry census of one row: (live, dead, capacity).
Sourcepub fn reclaimable_count(&self, _vid: u32, _cutoff: u64) -> usize
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
impl Clone for MappedFrozen
Source§fn clone(&self) -> MappedFrozen
fn clone(&self) -> MappedFrozen
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl CsrBase for MappedFrozen
impl CsrBase for MappedFrozen
Source§fn vertex_capacity(&self) -> usize
fn vertex_capacity(&self) -> usize
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.fn edge_count(&self) -> u64
fn dump(&self) -> Vec<u8> ⓘ
Source§fn dump_into(&self, out: &mut Vec<u8>)
fn dump_into(&self, out: &mut Vec<u8>)
dump into out without an intermediate
owned buffer, so checkpoint writes borrow the live topology instead
of cloning it for serialization.fn load(&mut self, _data: &[u8]) -> Result<(), StorageError>
Source§impl Debug for MappedFrozen
impl Debug for MappedFrozen
Source§impl MutableCsrTrait for MappedFrozen
impl MutableCsrTrait for MappedFrozen
Source§fn insert_edge(
&mut self,
_src_vid: u32,
_dst: VertexId,
_edge_id: EdgeId,
_ts: u64,
) -> Result<(), StorageError>
fn insert_edge( &mut self, _src_vid: u32, _dst: VertexId, _edge_id: EdgeId, _ts: u64, ) -> Result<(), StorageError>
Source§fn delete_edge(
&mut self,
_src_vid: u32,
_edge_id: EdgeId,
_ts: u64,
) -> Result<bool, StorageError>
fn delete_edge( &mut self, _src_vid: u32, _edge_id: EdgeId, _ts: u64, ) -> Result<bool, StorageError>
Source§fn delete_edge_by_dst(
&mut self,
_src_vid: u32,
_dst: VertexId,
_ts: u64,
) -> usize
fn delete_edge_by_dst( &mut self, _src_vid: u32, _dst: VertexId, _ts: u64, ) -> usize
Source§fn locate_edge(
&self,
src_vid: u32,
edge_id: EdgeId,
) -> Option<(EdgePosition, Nbr)>
fn locate_edge( &self, src_vid: u32, edge_id: EdgeId, ) -> Option<(EdgePosition, Nbr)>
Source§fn delete_edge_at_position(
&mut self,
_src_vid: u32,
_position: EdgePosition,
_expected: EdgeId,
_ts: u64,
) -> Result<bool, StorageError>
fn delete_edge_at_position( &mut self, _src_vid: u32, _position: EdgePosition, _expected: EdgeId, _ts: u64, ) -> Result<bool, StorageError>
Source§fn revert_delete_at_position(
&mut self,
_src_vid: u32,
_position: EdgePosition,
_expected: EdgeId,
_ts: u64,
) -> bool
fn revert_delete_at_position( &mut self, _src_vid: u32, _position: EdgePosition, _expected: EdgeId, _ts: u64, ) -> bool
Source§fn delete_edge_by_offset(
&mut self,
_src_vid: u32,
_offset: i32,
_ts: u64,
) -> Result<bool, StorageError>
fn delete_edge_by_offset( &mut self, _src_vid: u32, _offset: i32, _ts: u64, ) -> Result<bool, StorageError>
Source§fn revert_delete_by_offset(
&mut self,
_src_vid: u32,
_offset: i32,
_ts: u64,
) -> bool
fn revert_delete_by_offset( &mut self, _src_vid: u32, _offset: i32, _ts: u64, ) -> bool
Source§fn nbr_at_offset(&self, src_vid: u32, offset: i32) -> Option<Nbr>
fn nbr_at_offset(&self, src_vid: u32, offset: i32) -> Option<Nbr>
Source§fn get_edge_physical(&self, src_vid: u32, dst: VertexId) -> Option<Nbr>
fn get_edge_physical(&self, src_vid: u32, dst: VertexId) -> Option<Nbr>
Source§fn physical_edges_of(&self, src_vid: u32) -> Vec<Nbr>
fn physical_edges_of(&self, src_vid: u32) -> Vec<Nbr>
Source§fn fill_physical_into(&self, src_vid: u32, out: &mut Vec<Nbr>)
fn fill_physical_into(&self, src_vid: u32, out: &mut Vec<Nbr>)
Source§fn has_physical_entries(&self, vid: u32) -> bool
fn has_physical_entries(&self, vid: u32) -> bool
Source§fn primary_contains(&self, src_vid: u32, edge_id: EdgeId) -> bool
fn primary_contains(&self, src_vid: u32, edge_id: EdgeId) -> bool
edge_id.Source§fn rollback_insert(&mut self, _src_vid: u32, _edge_id: EdgeId) -> bool
fn rollback_insert(&mut self, _src_vid: u32, _edge_id: EdgeId) -> bool
Source§fn revert_delete_by_edge_id(
&mut self,
_src_vid: u32,
_edge_id: EdgeId,
_ts: u64,
) -> bool
fn revert_delete_by_edge_id( &mut self, _src_vid: u32, _edge_id: EdgeId, _ts: u64, ) -> bool
ts. Read moreSource§fn get_edge(&self, src_vid: u32, dst: VertexId, ts: u64) -> Option<Nbr>
fn get_edge(&self, src_vid: u32, dst: VertexId, ts: u64) -> Option<Nbr>
Source§fn edges_of(&self, src_vid: u32, ts: u64) -> Vec<Nbr>
fn edges_of(&self, src_vid: u32, ts: u64) -> Vec<Nbr>
Source§fn compact_vertex_with_reporting(
&mut self,
_vid: u32,
_cutoff: u64,
_on_edge_removed: &mut dyn FnMut(EdgeId, u64),
) -> usize
fn compact_vertex_with_reporting( &mut self, _vid: u32, _cutoff: u64, _on_edge_removed: &mut dyn FnMut(EdgeId, u64), ) -> usize
cutoff and tightening live entries without touching other rows. Read moreSource§fn reclaimable_count(&self, _vid: u32, _cutoff: u64) -> usize
fn reclaimable_count(&self, _vid: u32, _cutoff: u64) -> usize
cutoff. Read moreSource§fn vertex_needs_compact(&self, _vid: u32, _cutoff: u64) -> bool
fn vertex_needs_compact(&self, _vid: u32, _cutoff: u64) -> bool
cutoff.Source§fn vertex_census(&self, vid: u32) -> (usize, usize, usize)
fn vertex_census(&self, vid: u32) -> (usize, usize, usize)
(live, dead, capacity). Read moreSource§fn vertex_reclaim_probe(&self, vid: u32, _cutoff: u64) -> (usize, usize)
fn vertex_reclaim_probe(&self, vid: u32, _cutoff: u64) -> (usize, usize)
(dead, reclaimable). Read moreSource§fn row_gap(&self, _vid: u32) -> usize
fn row_gap(&self, _vid: u32) -> usize
Source§fn row_density(&self, _vid: u32) -> f32
fn row_density(&self, _vid: u32) -> f32
Source§fn rebalance_row(&mut self, _vid: u32) -> bool
fn rebalance_row(&mut self, _vid: u32) -> bool
Source§fn used_memory_size(&self) -> usize
fn used_memory_size(&self) -> usize
Auto Trait Implementations§
impl Freeze for MappedFrozen
impl RefUnwindSafe for MappedFrozen
impl Send for MappedFrozen
impl Sync for MappedFrozen
impl Unpin for MappedFrozen
impl UnsafeUnpin for MappedFrozen
impl UnwindSafe for MappedFrozen
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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.impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
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.