pub trait DataSize {
const IS_DYNAMIC: bool;
const STATIC_HEAP_SIZE: usize;
// Required method
fn estimate_heap_size(&self) -> usize;
// Provided method
fn estimate_detailed_heap_size(&self) -> MemUsageNode { ... }
}Expand description
Indicates that a type knows how to approximate its memory usage.
Required Associated Constants§
Sourceconst IS_DYNAMIC: bool
const IS_DYNAMIC: bool
If true, the type has a heap size that can vary at runtime, depending on the actual value.
Sourceconst STATIC_HEAP_SIZE: usize
const STATIC_HEAP_SIZE: usize
The amount of space a value of the type always occupies. If IS_DYNAMIC is false, this is
the total amount of heap memory occupied by the value. Otherwise this is a lower bound.
Required Methods§
Sourcefn estimate_heap_size(&self) -> usize
fn estimate_heap_size(&self) -> usize
Estimates the size of heap memory taken up by this value.
Does not include data on the stack, which is usually determined using mem::size_of.
Provided Methods§
Sourcefn estimate_detailed_heap_size(&self) -> MemUsageNode
fn estimate_detailed_heap_size(&self) -> MemUsageNode
Create a tree of memory estimations.
Similar to estimate_heap_size, but the returned value is a tree that typically reports
memory used by structs individually.
Requires the detailed feature to be enabled.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.
Implementations on Foreign Types§
Source§impl DataSize for IpAddr
impl DataSize for IpAddr
const IS_DYNAMIC: bool = false
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl DataSize for SocketAddr
impl DataSize for SocketAddr
const IS_DYNAMIC: bool = false
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl DataSize for bool
impl DataSize for bool
const IS_DYNAMIC: bool = false
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl DataSize for char
impl DataSize for char
const IS_DYNAMIC: bool = false
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl DataSize for f32
impl DataSize for f32
const IS_DYNAMIC: bool = false
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl DataSize for f64
impl DataSize for f64
const IS_DYNAMIC: bool = false
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl DataSize for i8
impl DataSize for i8
const IS_DYNAMIC: bool = false
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl DataSize for i16
impl DataSize for i16
const IS_DYNAMIC: bool = false
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl DataSize for i32
impl DataSize for i32
const IS_DYNAMIC: bool = false
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl DataSize for i64
impl DataSize for i64
const IS_DYNAMIC: bool = false
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl DataSize for i128
impl DataSize for i128
const IS_DYNAMIC: bool = false
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl DataSize for isize
impl DataSize for isize
const IS_DYNAMIC: bool = false
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl DataSize for u8
impl DataSize for u8
const IS_DYNAMIC: bool = false
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl DataSize for u16
impl DataSize for u16
const IS_DYNAMIC: bool = false
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl DataSize for u32
impl DataSize for u32
const IS_DYNAMIC: bool = false
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl DataSize for u64
impl DataSize for u64
const IS_DYNAMIC: bool = false
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl DataSize for u128
impl DataSize for u128
const IS_DYNAMIC: bool = false
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl DataSize for ()
impl DataSize for ()
const IS_DYNAMIC: bool = false
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl DataSize for usize
impl DataSize for usize
const IS_DYNAMIC: bool = false
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl DataSize for Box<str>
impl DataSize for Box<str>
const IS_DYNAMIC: bool = true
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl DataSize for String
impl DataSize for String
const IS_DYNAMIC: bool = true
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl DataSize for Ipv4Addr
impl DataSize for Ipv4Addr
const IS_DYNAMIC: bool = false
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl DataSize for Ipv6Addr
impl DataSize for Ipv6Addr
const IS_DYNAMIC: bool = false
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl DataSize for SocketAddrV4
impl DataSize for SocketAddrV4
const IS_DYNAMIC: bool = false
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl DataSize for SocketAddrV6
impl DataSize for SocketAddrV6
const IS_DYNAMIC: bool = false
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl DataSize for Duration
impl DataSize for Duration
const IS_DYNAMIC: bool = false
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl DataSize for OsString
impl DataSize for OsString
const IS_DYNAMIC: bool = true
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl DataSize for PathBuf
impl DataSize for PathBuf
const IS_DYNAMIC: bool = true
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl DataSize for Instant
impl DataSize for Instant
const IS_DYNAMIC: bool = false
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl DataSize for SystemTime
impl DataSize for SystemTime
const IS_DYNAMIC: bool = false
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl DataSize for FakeClock
impl DataSize for FakeClock
const IS_DYNAMIC: bool = false
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl<'a, T> DataSize for Cow<'a, T>
impl<'a, T> DataSize for Cow<'a, T>
const IS_DYNAMIC: bool = true
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl<A> DataSize for SmallVec<A>
impl<A> DataSize for SmallVec<A>
const IS_DYNAMIC: bool = true
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl<K, V> DataSize for BTreeMap<K, V>
impl<K, V> DataSize for BTreeMap<K, V>
const IS_DYNAMIC: bool = true
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl<K, V, S> DataSize for HashMap<K, V, S>
impl<K, V, S> DataSize for HashMap<K, V, S>
const IS_DYNAMIC: bool = true
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl<T0> DataSize for (T0,)where
T0: DataSize,
impl<T0> DataSize for (T0,)where
T0: DataSize,
const IS_DYNAMIC: bool = T0::IS_DYNAMIC
const STATIC_HEAP_SIZE: usize = T0::STATIC_HEAP_SIZE
fn estimate_heap_size(&self) -> usize
Source§impl<T0, T1> DataSize for (T0, T1)
impl<T0, T1> DataSize for (T0, T1)
const IS_DYNAMIC: bool
const STATIC_HEAP_SIZE: usize
fn estimate_heap_size(&self) -> usize
Source§impl<T0, T1, T2> DataSize for (T0, T1, T2)
impl<T0, T1, T2> DataSize for (T0, T1, T2)
const IS_DYNAMIC: bool
const STATIC_HEAP_SIZE: usize
fn estimate_heap_size(&self) -> usize
Source§impl<T0, T1, T2, T3> DataSize for (T0, T1, T2, T3)
impl<T0, T1, T2, T3> DataSize for (T0, T1, T2, T3)
const IS_DYNAMIC: bool
const STATIC_HEAP_SIZE: usize
fn estimate_heap_size(&self) -> usize
Source§impl<T0, T1, T2, T3, T4> DataSize for (T0, T1, T2, T3, T4)
impl<T0, T1, T2, T3, T4> DataSize for (T0, T1, T2, T3, T4)
const IS_DYNAMIC: bool
const STATIC_HEAP_SIZE: usize
fn estimate_heap_size(&self) -> usize
Source§impl<T0, T1, T2, T3, T4, T5> DataSize for (T0, T1, T2, T3, T4, T5)
impl<T0, T1, T2, T3, T4, T5> DataSize for (T0, T1, T2, T3, T4, T5)
const IS_DYNAMIC: bool
const STATIC_HEAP_SIZE: usize
fn estimate_heap_size(&self) -> usize
Source§impl<T0, T1, T2, T3, T4, T5, T6> DataSize for (T0, T1, T2, T3, T4, T5, T6)
impl<T0, T1, T2, T3, T4, T5, T6> DataSize for (T0, T1, T2, T3, T4, T5, T6)
const IS_DYNAMIC: bool
const STATIC_HEAP_SIZE: usize
fn estimate_heap_size(&self) -> usize
Source§impl<T0, T1, T2, T3, T4, T5, T6, T7> DataSize for (T0, T1, T2, T3, T4, T5, T6, T7)
impl<T0, T1, T2, T3, T4, T5, T6, T7> DataSize for (T0, T1, T2, T3, T4, T5, T6, T7)
const IS_DYNAMIC: bool
const STATIC_HEAP_SIZE: usize
fn estimate_heap_size(&self) -> usize
Source§impl<T0, T1, T2, T3, T4, T5, T6, T7, T8> DataSize for (T0, T1, T2, T3, T4, T5, T6, T7, T8)
impl<T0, T1, T2, T3, T4, T5, T6, T7, T8> DataSize for (T0, T1, T2, T3, T4, T5, T6, T7, T8)
const IS_DYNAMIC: bool
const STATIC_HEAP_SIZE: usize
fn estimate_heap_size(&self) -> usize
Source§impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> DataSize for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)
impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> DataSize for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)
const IS_DYNAMIC: bool
const STATIC_HEAP_SIZE: usize
fn estimate_heap_size(&self) -> usize
Source§impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> DataSize for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)
impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> DataSize for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)
const IS_DYNAMIC: bool
const STATIC_HEAP_SIZE: usize
fn estimate_heap_size(&self) -> usize
Source§impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> DataSize for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)
impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> DataSize for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)
const IS_DYNAMIC: bool
const STATIC_HEAP_SIZE: usize
fn estimate_heap_size(&self) -> usize
Source§impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> DataSize for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)
impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> DataSize for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)
const IS_DYNAMIC: bool
const STATIC_HEAP_SIZE: usize
fn estimate_heap_size(&self) -> usize
Source§impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> DataSize for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)
impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> DataSize for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)
const IS_DYNAMIC: bool
const STATIC_HEAP_SIZE: usize
fn estimate_heap_size(&self) -> usize
Source§impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> DataSize for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)
impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> DataSize for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)
const IS_DYNAMIC: bool
const STATIC_HEAP_SIZE: usize
fn estimate_heap_size(&self) -> usize
Source§impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> DataSize for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)
impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> DataSize for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)
const IS_DYNAMIC: bool
const STATIC_HEAP_SIZE: usize
fn estimate_heap_size(&self) -> usize
Source§impl<T> DataSize for Option<T>where
T: DataSize,
impl<T> DataSize for Option<T>where
T: DataSize,
const IS_DYNAMIC: bool
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl<T> DataSize for &T
impl<T> DataSize for &T
const IS_DYNAMIC: bool = false
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl<T> DataSize for &mut T
impl<T> DataSize for &mut T
const IS_DYNAMIC: bool = false
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl<T> DataSize for Box<[T]>where
T: DataSize,
impl<T> DataSize for Box<[T]>where
T: DataSize,
const IS_DYNAMIC: bool = true
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl<T> DataSize for Box<T>where
T: DataSize,
impl<T> DataSize for Box<T>where
T: DataSize,
const IS_DYNAMIC: bool = T::IS_DYNAMIC
const STATIC_HEAP_SIZE: usize
fn estimate_heap_size(&self) -> usize
Source§impl<T> DataSize for BinaryHeap<T>where
T: DataSize,
impl<T> DataSize for BinaryHeap<T>where
T: DataSize,
const IS_DYNAMIC: bool = true
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl<T> DataSize for BTreeSet<T>where
T: DataSize,
impl<T> DataSize for BTreeSet<T>where
T: DataSize,
const IS_DYNAMIC: bool = true
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl<T> DataSize for VecDeque<T>where
T: DataSize,
impl<T> DataSize for VecDeque<T>where
T: DataSize,
const IS_DYNAMIC: bool = true
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl<T> DataSize for Vec<T>where
T: DataSize,
impl<T> DataSize for Vec<T>where
T: DataSize,
const IS_DYNAMIC: bool = true
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl<T> DataSize for Reverse<T>where
T: DataSize,
impl<T> DataSize for Reverse<T>where
T: DataSize,
const IS_DYNAMIC: bool = <T as DataSize>::IS_DYNAMIC
const STATIC_HEAP_SIZE: usize = <T as DataSize>::STATIC_HEAP_SIZE
fn estimate_heap_size(&self) -> usize
Source§impl<T> DataSize for PhantomData<T>
impl<T> DataSize for PhantomData<T>
const IS_DYNAMIC: bool = false
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl<T> DataSize for AssertUnwindSafe<T>where
T: DataSize,
impl<T> DataSize for AssertUnwindSafe<T>where
T: DataSize,
const IS_DYNAMIC: bool = <T as DataSize>::IS_DYNAMIC
const STATIC_HEAP_SIZE: usize = <T as DataSize>::STATIC_HEAP_SIZE
fn estimate_heap_size(&self) -> usize
Source§impl<T> DataSize for Receiver<T>
impl<T> DataSize for Receiver<T>
const IS_DYNAMIC: bool = false
const STATIC_HEAP_SIZE: usize
fn estimate_heap_size(&self) -> usize
Source§impl<T> DataSize for Sender<T>
impl<T> DataSize for Sender<T>
const IS_DYNAMIC: bool = false
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl<T> DataSize for JoinHandle<T>
impl<T> DataSize for JoinHandle<T>
const IS_DYNAMIC: bool = false
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl<T> DataSize for Receiver<T>
impl<T> DataSize for Receiver<T>
const IS_DYNAMIC: bool = false
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl<T> DataSize for Sender<T>
impl<T> DataSize for Sender<T>
const IS_DYNAMIC: bool = false
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl<T, E> DataSize for Result<T, E>
impl<T, E> DataSize for Result<T, E>
const IS_DYNAMIC: bool
const STATIC_HEAP_SIZE: usize
fn estimate_heap_size(&self) -> usize
Source§impl<T, S> DataSize for HashSet<T, S>where
T: DataSize,
impl<T, S> DataSize for HashSet<T, S>where
T: DataSize,
const IS_DYNAMIC: bool = true
const STATIC_HEAP_SIZE: usize = 0usize
fn estimate_heap_size(&self) -> usize
Source§impl<T, const N: usize> DataSize for [T; N]where
T: DataSize,
Available on crate feature const-generics only.
impl<T, const N: usize> DataSize for [T; N]where
T: DataSize,
const-generics only.