parity_util_mem

Trait MallocSizeOf

Source
pub trait MallocSizeOf {
    // Required method
    fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize;

    // Provided method
    fn constant_size() -> Option<usize>
       where Self: Sized { ... }
}
Expand description

Trait for measuring the “deep” heap usage of a data structure. This is the most commonly-used of the traits.

Required Methods§

Source

fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize

Measure the heap usage of all descendant heap-allocated structures, but not the space taken up by the value itself. If T::size_of is a constant, consider implementing constant_size as well.

Provided Methods§

Source

fn constant_size() -> Option<usize>
where Self: Sized,

Used to optimize MallocSizeOf implementation for collections like Vec and HashMap to avoid iterating over them unnecessarily. The Self: Sized bound is for object safety.

Implementations on Foreign Types§

Source§

impl MallocSizeOf for bool

Source§

impl MallocSizeOf for char

Source§

impl MallocSizeOf for f32

Source§

impl MallocSizeOf for f64

Source§

impl MallocSizeOf for i8

Source§

impl MallocSizeOf for i16

Source§

impl MallocSizeOf for i32

Source§

impl MallocSizeOf for i64

Source§

impl MallocSizeOf for i128

Source§

impl MallocSizeOf for isize

Source§

impl MallocSizeOf for str

Source§

impl MallocSizeOf for u8

Source§

impl MallocSizeOf for u16

Source§

impl MallocSizeOf for u32

Source§

impl MallocSizeOf for u64

Source§

impl MallocSizeOf for u128

Source§

impl MallocSizeOf for ()

Source§

impl MallocSizeOf for usize

Source§

impl MallocSizeOf for String

Source§

fn size_of(&self, _ops: &mut MallocSizeOfOps) -> usize

Source§

impl MallocSizeOf for Range<f32>

Source§

impl MallocSizeOf for Range<f64>

Source§

impl MallocSizeOf for Range<i8>

Source§

impl MallocSizeOf for Range<i16>

Source§

impl MallocSizeOf for Range<i32>

Source§

impl MallocSizeOf for Range<i64>

Source§

impl MallocSizeOf for Range<isize>

Source§

impl MallocSizeOf for Range<u8>

Source§

impl MallocSizeOf for Range<u16>

Source§

impl MallocSizeOf for Range<u32>

Source§

impl MallocSizeOf for Range<u64>

Source§

impl MallocSizeOf for Range<usize>

Source§

impl MallocSizeOf for AtomicBool

Source§

impl MallocSizeOf for AtomicIsize

Source§

impl MallocSizeOf for AtomicUsize

Source§

impl MallocSizeOf for Duration

Source§

impl MallocSizeOf for Instant

Source§

impl MallocSizeOf for Bloom

Source§

impl MallocSizeOf for H32

Source§

impl MallocSizeOf for H64

Source§

impl MallocSizeOf for H264

Source§

impl MallocSizeOf for H520

Source§

impl MallocSizeOf for U64

Source§

impl MallocSizeOf for H128

Source§

impl MallocSizeOf for H160

Source§

impl MallocSizeOf for H256

Source§

impl MallocSizeOf for H512

Source§

impl MallocSizeOf for U128

Source§

impl MallocSizeOf for U256

Source§

impl MallocSizeOf for U512

Source§

impl MallocSizeOf for [u8; 1]

Source§

impl MallocSizeOf for [u8; 2]

Source§

impl MallocSizeOf for [u8; 3]

Source§

impl MallocSizeOf for [u8; 4]

Source§

impl MallocSizeOf for [u8; 5]

Source§

impl MallocSizeOf for [u8; 6]

Source§

impl MallocSizeOf for [u8; 7]

Source§

impl MallocSizeOf for [u8; 8]

Source§

impl MallocSizeOf for [u8; 9]

Source§

impl MallocSizeOf for [u8; 10]

Source§

impl MallocSizeOf for [u8; 11]

Source§

impl MallocSizeOf for [u8; 12]

Source§

impl MallocSizeOf for [u8; 13]

Source§

impl MallocSizeOf for [u8; 14]

Source§

impl MallocSizeOf for [u8; 15]

Source§

impl MallocSizeOf for [u8; 16]

Source§

impl MallocSizeOf for [u8; 17]

Source§

impl MallocSizeOf for [u8; 18]

Source§

impl MallocSizeOf for [u8; 19]

Source§

impl MallocSizeOf for [u8; 20]

Source§

impl MallocSizeOf for [u8; 21]

Source§

impl MallocSizeOf for [u8; 22]

Source§

impl MallocSizeOf for [u8; 23]

Source§

impl MallocSizeOf for [u8; 24]

Source§

impl MallocSizeOf for [u8; 25]

Source§

impl MallocSizeOf for [u8; 26]

Source§

impl MallocSizeOf for [u8; 27]

Source§

impl MallocSizeOf for [u8; 28]

Source§

impl MallocSizeOf for [u8; 29]

Source§

impl MallocSizeOf for [u8; 30]

Source§

impl MallocSizeOf for [u8; 31]

Source§

impl MallocSizeOf for [u8; 32]

Source§

impl<'a, B: ?Sized + ToOwned> MallocSizeOf for Cow<'a, B>
where B::Owned: MallocSizeOf,

Source§

fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize

Source§

impl<'a, T: ?Sized> MallocSizeOf for &'a T

Source§

impl<I: MallocSizeOf> MallocSizeOf for Reverse<I>

Source§

impl<K, V> MallocSizeOf for BTreeMap<K, V>

Source§

fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize

Source§

impl<K, V, S> MallocSizeOf for HashMap<K, V, S>

Source§

fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize

Source§

impl<K, V, S> MallocSizeOf for HashMap<K, V, S>

Source§

fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize

Source§

impl<K, V, S> MallocSizeOf for LruCache<K, V, S>

Source§

fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize

Source§

impl<T> MallocSizeOf for BTreeSet<T>
where T: MallocSizeOf,

Source§

fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize

Source§

impl<T> MallocSizeOf for PhantomData<T>

Source§

impl<T> MallocSizeOf for SmallVec<[T; 32]>
where T: MallocSizeOf,

Source§

fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize

Source§

impl<T> MallocSizeOf for SmallVec<[T; 36]>
where T: MallocSizeOf,

Source§

fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize

Source§

impl<T, S> MallocSizeOf for HashSet<T, S>
where T: Eq + Hash + MallocSizeOf, S: BuildHasher,

Source§

fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize

Source§

impl<T: MallocSizeOf + Copy> MallocSizeOf for Cell<T>

Source§

impl<T: MallocSizeOf + ?Sized> MallocSizeOf for Box<T>

Source§

fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize

Source§

impl<T: MallocSizeOf> MallocSizeOf for Option<T>

Source§

impl<T: MallocSizeOf> MallocSizeOf for [T]

Source§

fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize

Source§

impl<T: MallocSizeOf> MallocSizeOf for VecDeque<T>

Source§

fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize

Source§

impl<T: MallocSizeOf> MallocSizeOf for Arc<T>

Source§

fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize

Source§

impl<T: MallocSizeOf> MallocSizeOf for Vec<T>

Source§

fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize

Source§

impl<T: MallocSizeOf> MallocSizeOf for RefCell<T>

Source§

impl<T: MallocSizeOf> MallocSizeOf for Mutex<T>

If a mutex is stored directly as a member of a data type that is being measured, it is the unique owner of its contents and deserves to be measured.

If a mutex is stored inside of an Arc value as a member of a data type that is being measured, the Arc will not be automatically measured so there is no risk of overcounting the mutex’s contents.

The same reasoning applies to RwLock.

Source§

fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize

Source§

impl<T: MallocSizeOf> MallocSizeOf for RwLock<T>

Source§

fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize

Source§

impl<T: MallocSizeOf> MallocSizeOf for Mutex<T>

Source§

fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize

Source§

impl<T: MallocSizeOf> MallocSizeOf for RwLock<T>

Source§

fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize

Source§

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

Source§

impl<TupleElement0: MallocSizeOf> MallocSizeOf for (TupleElement0,)

Source§

impl<TupleElement0: MallocSizeOf, TupleElement1: MallocSizeOf> MallocSizeOf for (TupleElement0, TupleElement1)

Source§

impl<TupleElement0: MallocSizeOf, TupleElement1: MallocSizeOf, TupleElement2: MallocSizeOf> MallocSizeOf for (TupleElement0, TupleElement1, TupleElement2)

Source§

impl<TupleElement0: MallocSizeOf, TupleElement1: MallocSizeOf, TupleElement2: MallocSizeOf, TupleElement3: MallocSizeOf> MallocSizeOf for (TupleElement0, TupleElement1, TupleElement2, TupleElement3)

Source§

impl<TupleElement0: MallocSizeOf, TupleElement1: MallocSizeOf, TupleElement2: MallocSizeOf, TupleElement3: MallocSizeOf, TupleElement4: MallocSizeOf> MallocSizeOf for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4)

Source§

impl<TupleElement0: MallocSizeOf, TupleElement1: MallocSizeOf, TupleElement2: MallocSizeOf, TupleElement3: MallocSizeOf, TupleElement4: MallocSizeOf, TupleElement5: MallocSizeOf> MallocSizeOf for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5)

Source§

impl<TupleElement0: MallocSizeOf, TupleElement1: MallocSizeOf, TupleElement2: MallocSizeOf, TupleElement3: MallocSizeOf, TupleElement4: MallocSizeOf, TupleElement5: MallocSizeOf, TupleElement6: MallocSizeOf> MallocSizeOf for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6)

Source§

impl<TupleElement0: MallocSizeOf, TupleElement1: MallocSizeOf, TupleElement2: MallocSizeOf, TupleElement3: MallocSizeOf, TupleElement4: MallocSizeOf, TupleElement5: MallocSizeOf, TupleElement6: MallocSizeOf, TupleElement7: MallocSizeOf> MallocSizeOf for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7)

Source§

impl<TupleElement0: MallocSizeOf, TupleElement1: MallocSizeOf, TupleElement2: MallocSizeOf, TupleElement3: MallocSizeOf, TupleElement4: MallocSizeOf, TupleElement5: MallocSizeOf, TupleElement6: MallocSizeOf, TupleElement7: MallocSizeOf, TupleElement8: MallocSizeOf> MallocSizeOf for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8)

Source§

impl<TupleElement0: MallocSizeOf, TupleElement1: MallocSizeOf, TupleElement2: MallocSizeOf, TupleElement3: MallocSizeOf, TupleElement4: MallocSizeOf, TupleElement5: MallocSizeOf, TupleElement6: MallocSizeOf, TupleElement7: MallocSizeOf, TupleElement8: MallocSizeOf, TupleElement9: MallocSizeOf> MallocSizeOf for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9)

Source§

impl<TupleElement0: MallocSizeOf, TupleElement1: MallocSizeOf, TupleElement2: MallocSizeOf, TupleElement3: MallocSizeOf, TupleElement4: MallocSizeOf, TupleElement5: MallocSizeOf, TupleElement6: MallocSizeOf, TupleElement7: MallocSizeOf, TupleElement8: MallocSizeOf, TupleElement9: MallocSizeOf, TupleElement10: MallocSizeOf> MallocSizeOf for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9, TupleElement10)

Source§

impl<TupleElement0: MallocSizeOf, TupleElement1: MallocSizeOf, TupleElement2: MallocSizeOf, TupleElement3: MallocSizeOf, TupleElement4: MallocSizeOf, TupleElement5: MallocSizeOf, TupleElement6: MallocSizeOf, TupleElement7: MallocSizeOf, TupleElement8: MallocSizeOf, TupleElement9: MallocSizeOf, TupleElement10: MallocSizeOf, TupleElement11: MallocSizeOf> MallocSizeOf for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9, TupleElement10, TupleElement11)

Implementors§