DataSize

Trait DataSize 

Source
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§

Source

const IS_DYNAMIC: bool

If true, the type has a heap size that can vary at runtime, depending on the actual value.

Source

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§

Source

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§

Source

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

Source§

impl DataSize for SocketAddr

Source§

impl DataSize for bool

Source§

impl DataSize for char

Source§

impl DataSize for f32

Source§

impl DataSize for f64

Source§

impl DataSize for i8

Source§

impl DataSize for i16

Source§

impl DataSize for i32

Source§

impl DataSize for i64

Source§

impl DataSize for i128

Source§

impl DataSize for isize

Source§

impl DataSize for u8

Source§

impl DataSize for u16

Source§

impl DataSize for u32

Source§

impl DataSize for u64

Source§

impl DataSize for u128

Source§

impl DataSize for ()

Source§

impl DataSize for usize

Source§

impl DataSize for Box<str>

Source§

impl DataSize for String

Source§

impl DataSize for Ipv4Addr

Source§

impl DataSize for Ipv6Addr

Source§

impl DataSize for SocketAddrV4

Source§

impl DataSize for SocketAddrV6

Source§

impl DataSize for Duration

Source§

impl DataSize for OsString

Source§

impl DataSize for PathBuf

Source§

impl DataSize for Instant

Source§

impl DataSize for SystemTime

Source§

impl DataSize for FakeClock

Source§

impl<'a, T> DataSize for Cow<'a, T>
where T: 'a + ToOwned + ?Sized, <T as ToOwned>::Owned: DataSize,

Source§

impl<A> DataSize for SmallVec<A>
where A: Array, A::Item: DataSize,

Source§

impl<K, V> DataSize for BTreeMap<K, V>
where K: DataSize, V: DataSize,

Source§

impl<K, V, S> DataSize for HashMap<K, V, S>
where K: DataSize, V: DataSize,

Source§

impl<T0> DataSize for (T0,)
where T0: DataSize,

Source§

const IS_DYNAMIC: bool = T0::IS_DYNAMIC

Source§

const STATIC_HEAP_SIZE: usize = T0::STATIC_HEAP_SIZE

Source§

fn estimate_heap_size(&self) -> usize

Source§

impl<T0, T1> DataSize for (T0, T1)
where T0: DataSize, T1: DataSize,

Source§

impl<T0, T1, T2> DataSize for (T0, T1, T2)
where T0: DataSize, T1: DataSize, T2: DataSize,

Source§

impl<T0, T1, T2, T3> DataSize for (T0, T1, T2, T3)
where T0: DataSize, T1: DataSize, T2: DataSize, T3: DataSize,

Source§

impl<T0, T1, T2, T3, T4> DataSize for (T0, T1, T2, T3, T4)
where T0: DataSize, T1: DataSize, T2: DataSize, T3: DataSize, T4: DataSize,

Source§

impl<T0, T1, T2, T3, T4, T5> DataSize for (T0, T1, T2, T3, T4, T5)
where T0: DataSize, T1: DataSize, T2: DataSize, T3: DataSize, T4: DataSize, T5: DataSize,

Source§

impl<T0, T1, T2, T3, T4, T5, T6> DataSize for (T0, T1, T2, T3, T4, T5, T6)
where T0: DataSize, T1: DataSize, T2: DataSize, T3: DataSize, T4: DataSize, T5: DataSize, T6: DataSize,

Source§

impl<T0, T1, T2, T3, T4, T5, T6, T7> DataSize for (T0, T1, T2, T3, T4, T5, T6, T7)
where T0: DataSize, T1: DataSize, T2: DataSize, T3: DataSize, T4: DataSize, T5: DataSize, T6: DataSize, T7: DataSize,

Source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8> DataSize for (T0, T1, T2, T3, T4, T5, T6, T7, T8)
where T0: DataSize, T1: DataSize, T2: DataSize, T3: DataSize, T4: DataSize, T5: DataSize, T6: DataSize, T7: DataSize, T8: DataSize,

Source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> DataSize for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)
where T0: DataSize, T1: DataSize, T2: DataSize, T3: DataSize, T4: DataSize, T5: DataSize, T6: DataSize, T7: DataSize, T8: DataSize, T9: DataSize,

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)
where T0: DataSize, T1: DataSize, T2: DataSize, T3: DataSize, T4: DataSize, T5: DataSize, T6: DataSize, T7: DataSize, T8: DataSize, T9: DataSize, T10: DataSize,

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)
where T0: DataSize, T1: DataSize, T2: DataSize, T3: DataSize, T4: DataSize, T5: DataSize, T6: DataSize, T7: DataSize, T8: DataSize, T9: DataSize, T10: DataSize, T11: DataSize,

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)
where T0: DataSize, T1: DataSize, T2: DataSize, T3: DataSize, T4: DataSize, T5: DataSize, T6: DataSize, T7: DataSize, T8: DataSize, T9: DataSize, T10: DataSize, T11: DataSize, T12: DataSize,

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)
where T0: DataSize, T1: DataSize, T2: DataSize, T3: DataSize, T4: DataSize, T5: DataSize, T6: DataSize, T7: DataSize, T8: DataSize, T9: DataSize, T10: DataSize, T11: DataSize, T12: DataSize, T13: DataSize,

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)
where T0: DataSize, T1: DataSize, T2: DataSize, T3: DataSize, T4: DataSize, T5: DataSize, T6: DataSize, T7: DataSize, T8: DataSize, T9: DataSize, T10: DataSize, T11: DataSize, T12: DataSize, T13: DataSize, T14: DataSize,

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)
where T0: DataSize, T1: DataSize, T2: DataSize, T3: DataSize, T4: DataSize, T5: DataSize, T6: DataSize, T7: DataSize, T8: DataSize, T9: DataSize, T10: DataSize, T11: DataSize, T12: DataSize, T13: DataSize, T14: DataSize, T15: DataSize,

Source§

impl<T> DataSize for Option<T>
where T: DataSize,

Source§

impl<T> DataSize for &T

Source§

impl<T> DataSize for &mut T

Source§

impl<T> DataSize for Box<[T]>
where T: DataSize,

Source§

impl<T> DataSize for Box<T>
where T: DataSize,

Source§

impl<T> DataSize for BinaryHeap<T>
where T: DataSize,

Source§

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

Source§

impl<T> DataSize for VecDeque<T>
where T: DataSize,

Source§

impl<T> DataSize for Vec<T>
where T: DataSize,

Source§

impl<T> DataSize for Reverse<T>
where T: DataSize,

Source§

const IS_DYNAMIC: bool = <T as DataSize>::IS_DYNAMIC

Source§

const STATIC_HEAP_SIZE: usize = <T as DataSize>::STATIC_HEAP_SIZE

Source§

fn estimate_heap_size(&self) -> usize

Source§

impl<T> DataSize for PhantomData<T>

Source§

impl<T> DataSize for AssertUnwindSafe<T>
where T: DataSize,

Source§

const IS_DYNAMIC: bool = <T as DataSize>::IS_DYNAMIC

Source§

const STATIC_HEAP_SIZE: usize = <T as DataSize>::STATIC_HEAP_SIZE

Source§

fn estimate_heap_size(&self) -> usize

Source§

impl<T> DataSize for Receiver<T>

Source§

impl<T> DataSize for Sender<T>

Source§

impl<T> DataSize for JoinHandle<T>

Source§

impl<T> DataSize for Receiver<T>

Source§

impl<T> DataSize for Sender<T>

Source§

impl<T, E> DataSize for Result<T, E>
where T: DataSize, E: DataSize,

Source§

impl<T, S> DataSize for HashSet<T, S>
where T: DataSize,

Source§

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

Available on crate feature const-generics only.
Source§

impl<T: DataSize> DataSize for Range<T>

Source§

impl<T: ?Sized> DataSize for Rc<T>

Source§

impl<T: ?Sized> DataSize for Weak<T>

Source§

impl<T: ?Sized> DataSize for Arc<T>

Source§

impl<T: ?Sized> DataSize for Weak<T>

Implementors§