Skip to main content

MemoryUsage

Trait MemoryUsage 

Source
pub trait MemoryUsage {
    // Required method
    fn memory_usage(&self) -> usize;

    // Provided methods
    fn memory_usage_compacted(&self) -> usize { ... }
    fn compact_memory(&mut self) -> usize { ... }
    fn memory_usage_compacted_ref(&self) -> usize { ... }
    fn compact_memory_ref(&self) -> usize { ... }
}
Expand description

Types that know their own memory usage

Required Methods§

Source

fn memory_usage(&self) -> usize

Get memory usage (including direct, indirect, and compactible memory)

Provided Methods§

Source

fn memory_usage_compacted(&self) -> usize

Get expected memory usage after compaction

Compaction means to remove unnecessary memory usage. This would include, for example, removing the unused capacity of a [Vec], by calling shrink_to_fit().

Types like [Vec] that support memory compaction should reimplement this function.

Source

fn compact_memory(&mut self) -> usize

Perform memory compaction, saving as much memory as possible, returning the amount of bytes saved

Source

fn memory_usage_compacted_ref(&self) -> usize

Get expected memory usage after compaction behind a shared reference

This is useful for types with interior mutability. Types that have or could have (ie. with generics) should implement this method and compact_memory_ref(). For types that don’t, the default implementation is a no-op.

See MemoryUsage::memory_usage_compacted for more details.

Source

fn compact_memory_ref(&self) -> usize

Perform memory compaction behind a shared reference, saving as much memory as possible, returning the amount of bytes saved

This is useful for types with interior mutability. Types that have or could have (ie. with generics) should implement this method and memory_usage_compacted_ref(). For types that don’t, the default implementation is a no-op.

See MemoryUsage::compact_memory for more details.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl MemoryUsage for ()

Source§

impl MemoryUsage for AtomicBool

Source§

impl MemoryUsage for AtomicI8

Source§

impl MemoryUsage for AtomicI16

Source§

impl MemoryUsage for AtomicI32

Source§

impl MemoryUsage for AtomicI64

Source§

impl MemoryUsage for AtomicIsize

Source§

impl MemoryUsage for AtomicU8

Source§

impl MemoryUsage for AtomicU16

Source§

impl MemoryUsage for AtomicU32

Source§

impl MemoryUsage for AtomicU64

Source§

impl MemoryUsage for AtomicUsize

Source§

impl MemoryUsage for NonZero<char>

Source§

impl MemoryUsage for NonZero<i8>

Source§

impl MemoryUsage for NonZero<i16>

Source§

impl MemoryUsage for NonZero<i32>

Source§

impl MemoryUsage for NonZero<i64>

Source§

impl MemoryUsage for NonZero<i128>

Source§

impl MemoryUsage for NonZero<isize>

Source§

impl MemoryUsage for NonZero<u8>

Source§

impl MemoryUsage for NonZero<u16>

Source§

impl MemoryUsage for NonZero<u32>

Source§

impl MemoryUsage for NonZero<u64>

Source§

impl MemoryUsage for NonZero<u128>

Source§

impl MemoryUsage for NonZero<usize>

Source§

impl MemoryUsage for Ordering

Source§

impl MemoryUsage for PhantomPinned

Source§

impl MemoryUsage for RangeFull

Source§

impl MemoryUsage for Saturating<i8>

Source§

impl MemoryUsage for Saturating<i16>

Source§

impl MemoryUsage for Saturating<i32>

Source§

impl MemoryUsage for Saturating<i64>

Source§

impl MemoryUsage for Saturating<i128>

Source§

impl MemoryUsage for Saturating<isize>

Source§

impl MemoryUsage for Saturating<u8>

Source§

impl MemoryUsage for Saturating<u16>

Source§

impl MemoryUsage for Saturating<u32>

Source§

impl MemoryUsage for Saturating<u64>

Source§

impl MemoryUsage for Saturating<u128>

Source§

impl MemoryUsage for Saturating<usize>

Source§

impl MemoryUsage for Wrapping<i8>

Source§

impl MemoryUsage for Wrapping<i16>

Source§

impl MemoryUsage for Wrapping<i32>

Source§

impl MemoryUsage for Wrapping<i64>

Source§

impl MemoryUsage for Wrapping<i128>

Source§

impl MemoryUsage for Wrapping<isize>

Source§

impl MemoryUsage for Wrapping<u8>

Source§

impl MemoryUsage for Wrapping<u16>

Source§

impl MemoryUsage for Wrapping<u32>

Source§

impl MemoryUsage for Wrapping<u64>

Source§

impl MemoryUsage for Wrapping<u128>

Source§

impl MemoryUsage for Wrapping<usize>

Source§

impl MemoryUsage for bool

Source§

impl MemoryUsage for char

Source§

impl MemoryUsage for f32

Source§

impl MemoryUsage for f64

Source§

impl MemoryUsage for i8

Source§

impl MemoryUsage for i16

Source§

impl MemoryUsage for i32

Source§

impl MemoryUsage for i64

Source§

impl MemoryUsage for i128

Source§

impl MemoryUsage for isize

Source§

impl MemoryUsage for str

Source§

impl MemoryUsage for u8

Source§

impl MemoryUsage for u16

Source§

impl MemoryUsage for u32

Source§

impl MemoryUsage for u64

Source§

impl MemoryUsage for u128

Source§

impl MemoryUsage for usize

Source§

impl<'h, T: MemoryUsage + ?Sized> MemoryUsage for &'h T

Source§

impl<'h, T: MemoryUsage + ?Sized> MemoryUsage for &'h mut T

Source§

impl<Idx: MemoryUsage> MemoryUsage for Range<Idx>

Source§

impl<Idx: MemoryUsage> MemoryUsage for RangeFrom<Idx>

Source§

impl<Idx: MemoryUsage> MemoryUsage for RangeInclusive<Idx>

Source§

impl<Idx: MemoryUsage> MemoryUsage for RangeTo<Idx>

Source§

impl<Idx: MemoryUsage> MemoryUsage for RangeToInclusive<Idx>

Source§

impl<T: ?Sized> MemoryUsage for *const T

Source§

impl<T: ?Sized> MemoryUsage for *mut T

Source§

impl<T: ?Sized> MemoryUsage for NonNull<T>

Source§

impl<T: ?Sized> MemoryUsage for PhantomData<T>

Source§

impl<T: MemoryUsage, E: MemoryUsage> MemoryUsage for Result<T, E>

Source§

impl<T: MemoryUsage, const N: usize> MemoryUsage for [T; N]

Source§

impl<T: MemoryUsage> MemoryUsage for Option<T>

Source§

impl<T: MemoryUsage> MemoryUsage for [T]

Source§

impl<T> MemoryUsage for AtomicPtr<T>

Implementors§