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§
Sourcefn size_of(&self, ops: &mut MallocSizeOfOps) -> usize
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§
Sourcefn constant_size() -> Option<usize>where
Self: Sized,
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
impl MallocSizeOf for bool
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for char
impl MallocSizeOf for char
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for f32
impl MallocSizeOf for f32
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for f64
impl MallocSizeOf for f64
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for i8
impl MallocSizeOf for i8
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for i16
impl MallocSizeOf for i16
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for i32
impl MallocSizeOf for i32
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for i64
impl MallocSizeOf for i64
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for i128
impl MallocSizeOf for i128
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for isize
impl MallocSizeOf for isize
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for str
impl MallocSizeOf for str
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for u8
impl MallocSizeOf for u8
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for u16
impl MallocSizeOf for u16
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for u32
impl MallocSizeOf for u32
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for u64
impl MallocSizeOf for u64
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for u128
impl MallocSizeOf for u128
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for ()
impl MallocSizeOf for ()
fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for usize
impl MallocSizeOf for usize
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for String
impl MallocSizeOf for String
fn size_of(&self, _ops: &mut MallocSizeOfOps) -> usize
Source§impl MallocSizeOf for Range<f32>
impl MallocSizeOf for Range<f32>
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for Range<f64>
impl MallocSizeOf for Range<f64>
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for Range<i8>
impl MallocSizeOf for Range<i8>
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for Range<i16>
impl MallocSizeOf for Range<i16>
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for Range<i32>
impl MallocSizeOf for Range<i32>
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for Range<i64>
impl MallocSizeOf for Range<i64>
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for Range<isize>
impl MallocSizeOf for Range<isize>
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for Range<u8>
impl MallocSizeOf for Range<u8>
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for Range<u16>
impl MallocSizeOf for Range<u16>
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for Range<u32>
impl MallocSizeOf for Range<u32>
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for Range<u64>
impl MallocSizeOf for Range<u64>
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for Range<usize>
impl MallocSizeOf for Range<usize>
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for AtomicBool
impl MallocSizeOf for AtomicBool
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for AtomicIsize
impl MallocSizeOf for AtomicIsize
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for AtomicUsize
impl MallocSizeOf for AtomicUsize
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for Duration
impl MallocSizeOf for Duration
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for Instant
impl MallocSizeOf for Instant
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for Bloom
impl MallocSizeOf for Bloom
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for H32
impl MallocSizeOf for H32
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for H64
impl MallocSizeOf for H64
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for H264
impl MallocSizeOf for H264
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for H520
impl MallocSizeOf for H520
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for U64
impl MallocSizeOf for U64
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for H128
impl MallocSizeOf for H128
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for H160
impl MallocSizeOf for H160
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for H256
impl MallocSizeOf for H256
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for H512
impl MallocSizeOf for H512
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for U128
impl MallocSizeOf for U128
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for U256
impl MallocSizeOf for U256
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for U512
impl MallocSizeOf for U512
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for [u8; 1]
impl MallocSizeOf for [u8; 1]
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for [u8; 2]
impl MallocSizeOf for [u8; 2]
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for [u8; 3]
impl MallocSizeOf for [u8; 3]
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for [u8; 4]
impl MallocSizeOf for [u8; 4]
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for [u8; 5]
impl MallocSizeOf for [u8; 5]
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for [u8; 6]
impl MallocSizeOf for [u8; 6]
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for [u8; 7]
impl MallocSizeOf for [u8; 7]
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for [u8; 8]
impl MallocSizeOf for [u8; 8]
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for [u8; 9]
impl MallocSizeOf for [u8; 9]
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for [u8; 10]
impl MallocSizeOf for [u8; 10]
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for [u8; 11]
impl MallocSizeOf for [u8; 11]
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for [u8; 12]
impl MallocSizeOf for [u8; 12]
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for [u8; 13]
impl MallocSizeOf for [u8; 13]
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for [u8; 14]
impl MallocSizeOf for [u8; 14]
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for [u8; 15]
impl MallocSizeOf for [u8; 15]
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for [u8; 16]
impl MallocSizeOf for [u8; 16]
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for [u8; 17]
impl MallocSizeOf for [u8; 17]
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for [u8; 18]
impl MallocSizeOf for [u8; 18]
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for [u8; 19]
impl MallocSizeOf for [u8; 19]
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for [u8; 20]
impl MallocSizeOf for [u8; 20]
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for [u8; 21]
impl MallocSizeOf for [u8; 21]
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for [u8; 22]
impl MallocSizeOf for [u8; 22]
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for [u8; 23]
impl MallocSizeOf for [u8; 23]
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for [u8; 24]
impl MallocSizeOf for [u8; 24]
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for [u8; 25]
impl MallocSizeOf for [u8; 25]
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for [u8; 26]
impl MallocSizeOf for [u8; 26]
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for [u8; 27]
impl MallocSizeOf for [u8; 27]
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for [u8; 28]
impl MallocSizeOf for [u8; 28]
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for [u8; 29]
impl MallocSizeOf for [u8; 29]
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for [u8; 30]
impl MallocSizeOf for [u8; 30]
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for [u8; 31]
impl MallocSizeOf for [u8; 31]
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl MallocSizeOf for [u8; 32]
impl MallocSizeOf for [u8; 32]
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl<'a, B: ?Sized + ToOwned> MallocSizeOf for Cow<'a, B>where
B::Owned: MallocSizeOf,
impl<'a, B: ?Sized + ToOwned> MallocSizeOf for Cow<'a, B>where
B::Owned: MallocSizeOf,
fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize
Source§impl<'a, T: ?Sized> MallocSizeOf for &'a T
impl<'a, T: ?Sized> MallocSizeOf for &'a T
fn size_of(&self, _ops: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl<I: MallocSizeOf> MallocSizeOf for Reverse<I>
impl<I: MallocSizeOf> MallocSizeOf for Reverse<I>
fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl<K, V> MallocSizeOf for BTreeMap<K, V>where
K: MallocSizeOf,
V: MallocSizeOf,
impl<K, V> MallocSizeOf for BTreeMap<K, V>where
K: MallocSizeOf,
V: MallocSizeOf,
fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize
Source§impl<K, V, S> MallocSizeOf for HashMap<K, V, S>where
K: MallocSizeOf,
V: MallocSizeOf,
impl<K, V, S> MallocSizeOf for HashMap<K, V, S>where
K: MallocSizeOf,
V: MallocSizeOf,
fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize
Source§impl<K, V, S> MallocSizeOf for HashMap<K, V, S>where
K: MallocSizeOf,
V: MallocSizeOf,
impl<K, V, S> MallocSizeOf for HashMap<K, V, S>where
K: MallocSizeOf,
V: MallocSizeOf,
fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize
Source§impl<K, V, S> MallocSizeOf for LruCache<K, V, S>
impl<K, V, S> MallocSizeOf for LruCache<K, V, S>
fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize
Source§impl<T> MallocSizeOf for BTreeSet<T>where
T: MallocSizeOf,
impl<T> MallocSizeOf for BTreeSet<T>where
T: MallocSizeOf,
fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize
Source§impl<T> MallocSizeOf for PhantomData<T>
impl<T> MallocSizeOf for PhantomData<T>
fn size_of(&self, _: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl<T> MallocSizeOf for SmallVec<[T; 32]>where
T: MallocSizeOf,
impl<T> MallocSizeOf for SmallVec<[T; 32]>where
T: MallocSizeOf,
fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize
Source§impl<T> MallocSizeOf for SmallVec<[T; 36]>where
T: MallocSizeOf,
impl<T> MallocSizeOf for SmallVec<[T; 36]>where
T: MallocSizeOf,
fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize
Source§impl<T, S> MallocSizeOf for HashSet<T, S>
impl<T, S> MallocSizeOf for HashSet<T, S>
fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize
Source§impl<T: MallocSizeOf + Copy> MallocSizeOf for Cell<T>
impl<T: MallocSizeOf + Copy> MallocSizeOf for Cell<T>
fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl<T: MallocSizeOf + ?Sized> MallocSizeOf for Box<T>
impl<T: MallocSizeOf + ?Sized> MallocSizeOf for Box<T>
fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize
Source§impl<T: MallocSizeOf> MallocSizeOf for Option<T>
impl<T: MallocSizeOf> MallocSizeOf for Option<T>
fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
Source§impl<T: MallocSizeOf> MallocSizeOf for [T]
impl<T: MallocSizeOf> MallocSizeOf for [T]
fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize
Source§impl<T: MallocSizeOf> MallocSizeOf for VecDeque<T>
impl<T: MallocSizeOf> MallocSizeOf for VecDeque<T>
fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize
Source§impl<T: MallocSizeOf> MallocSizeOf for Arc<T>
impl<T: MallocSizeOf> MallocSizeOf for Arc<T>
fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize
Source§impl<T: MallocSizeOf> MallocSizeOf for Vec<T>
impl<T: MallocSizeOf> MallocSizeOf for Vec<T>
fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize
Source§impl<T: MallocSizeOf> MallocSizeOf for RefCell<T>
impl<T: MallocSizeOf> MallocSizeOf for RefCell<T>
fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize
fn constant_size() -> Option<usize>
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.
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.