pub struct OverRelease { /* private fields */ }Expand description
Per-layer over-release counters shared by every releaser through
Arc<GlobalCounter>.
A nonzero counter means some call site released more bytes than that layer ever held — the “memory release exceeds allocation” symptom, now counted at the site that actually releases memory instead of at a dead code path.
Implementations§
Source§impl OverRelease
impl OverRelease
Sourcepub fn record(&self, layer: Layer, shortfall: usize)
pub fn record(&self, layer: Layer, shortfall: usize)
Record an over-release event against layer. shortfall is a
nonzero test, not a byte total — the counter counts events, and
never accumulates the shortfall bytes themselves. A zero shortfall
is a no-op.
Sourcepub fn database(&self) -> usize
pub fn database(&self) -> usize
Number of over-release events recorded against the database layer.
Sourcepub fn total(&self) -> usize
pub fn total(&self) -> usize
Total over-release events across every layer.
Sums four independent relaxed loads — not a single atomic read, so
a concurrent record on another layer can land between them. The
count settles once all releasers finish; it is not a point-in-time
snapshot under concurrent load.
Trait Implementations§
Source§impl Debug for OverRelease
impl Debug for OverRelease
Auto Trait Implementations§
impl !Freeze for OverRelease
impl RefUnwindSafe for OverRelease
impl Send for OverRelease
impl Sync for OverRelease
impl Unpin for OverRelease
impl UnsafeUnpin for OverRelease
impl UnwindSafe for OverRelease
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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> 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> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.