GetSize

Trait GetSize 

Source
pub trait GetSize: Sized {
    // Provided methods
    fn get_stack_size() -> usize { ... }
    fn get_heap_size(&self) -> usize { ... }
    fn get_heap_size_with_tracker<T>(&self, tracker: T) -> (usize, T)
       where T: GetSizeTracker { ... }
    fn get_size(&self) -> usize { ... }
    fn get_size_with_tracker<T>(&self, tracker: T) -> (usize, T)
       where T: GetSizeTracker { ... }
}
Expand description

Determine the size in bytes an object occupies inside RAM.

Provided Methods§

Source

fn get_stack_size() -> usize

Determines how may bytes this object occupies inside the stack.

The default implementation uses std::mem::size_of and should work for almost all types.

Source

fn get_heap_size(&self) -> usize

Determines how many bytes this object occupies inside the heap.

The default implementation simply delegates to get_heap_size_with_tracker with a noop tracker. This method is not meant to be implemented directly, and only exists for convenience.

Source

fn get_heap_size_with_tracker<T>(&self, tracker: T) -> (usize, T)
where T: GetSizeTracker,

Determines how many bytes this object occupies inside the heap while using a tracker.

The default implementation returns 0, assuming the object is fully allocated on the stack. It must be adjusted as appropriate for objects which hold data inside the heap.

Source

fn get_size(&self) -> usize

Determines the total size of the object.

The default implementation simply adds up the results of get_stack_size and get_heap_size and is not meant to be changed.

Source

fn get_size_with_tracker<T>(&self, tracker: T) -> (usize, T)
where T: GetSizeTracker,

Determines the total size of the object while using a tracker.

The default implementation simply adds up the results of get_stack_size and get_heap_size_with_tracker and is not meant to be changed.

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 GetSize for &str

Source§

impl GetSize for &CStr

Source§

fn get_heap_size_with_tracker<T>(&self, tracker: T) -> (usize, T)
where T: GetSizeTracker,

Source§

impl GetSize for &OsStr

Source§

fn get_heap_size_with_tracker<T>(&self, tracker: T) -> (usize, T)
where T: GetSizeTracker,

Source§

impl GetSize for &Path

Source§

impl GetSize for Ordering

Source§

impl GetSize for Infallible

Source§

impl GetSize for Ordering

Source§

impl GetSize for bool

Source§

impl GetSize for char

Source§

impl GetSize for f32

Source§

impl GetSize for f64

Source§

impl GetSize for i8

Source§

impl GetSize for i16

Source§

impl GetSize for i32

Source§

impl GetSize for i64

Source§

impl GetSize for i128

Source§

impl GetSize for isize

Source§

impl GetSize for u8

Source§

impl GetSize for u16

Source§

impl GetSize for u32

Source§

impl GetSize for u64

Source§

impl GetSize for u128

Source§

impl GetSize for ()

Source§

impl GetSize for usize

Source§

impl GetSize for Box<str>

Source§

fn get_heap_size_with_tracker<T>(&self, tracker: T) -> (usize, T)
where T: GetSizeTracker,

Source§

impl GetSize for CString

Source§

fn get_heap_size_with_tracker<T>(&self, tracker: T) -> (usize, T)
where T: GetSizeTracker,

Source§

impl GetSize for Rc<str>

Source§

fn get_heap_size_with_tracker<T>(&self, tracker: T) -> (usize, T)
where T: GetSizeTracker,

Source§

impl GetSize for String

Source§

fn get_heap_size_with_tracker<T>(&self, tracker: T) -> (usize, T)
where T: GetSizeTracker,

Source§

impl GetSize for Arc<str>

Source§

fn get_heap_size_with_tracker<T>(&self, tracker: T) -> (usize, T)
where T: GetSizeTracker,

Source§

impl GetSize for PhantomPinned

Source§

impl GetSize for NonZero<i8>

Source§

impl GetSize for NonZero<i16>

Source§

impl GetSize for NonZero<i32>

Source§

impl GetSize for NonZero<i64>

Source§

impl GetSize for NonZero<i128>

Source§

impl GetSize for NonZero<isize>

Source§

impl GetSize for NonZero<u8>

Source§

impl GetSize for NonZero<u16>

Source§

impl GetSize for NonZero<u32>

Source§

impl GetSize for NonZero<u64>

Source§

impl GetSize for NonZero<u128>

Source§

impl GetSize for NonZero<usize>

Source§

impl GetSize for RangeFull

Source§

impl GetSize for AtomicBool

Source§

impl GetSize for AtomicI8

Source§

impl GetSize for AtomicI16

Source§

impl GetSize for AtomicI32

Source§

impl GetSize for AtomicI64

Source§

impl GetSize for AtomicIsize

Source§

impl GetSize for AtomicU8

Source§

impl GetSize for AtomicU16

Source§

impl GetSize for AtomicU32

Source§

impl GetSize for AtomicU64

Source§

impl GetSize for AtomicUsize

Source§

impl GetSize for Duration

Source§

impl GetSize for OsString

Source§

fn get_heap_size_with_tracker<T>(&self, tracker: T) -> (usize, T)
where T: GetSizeTracker,

Source§

impl GetSize for DirBuilder

Source§

impl GetSize for DirEntry

Source§

impl GetSize for File

Source§

impl GetSize for FileType

Source§

impl GetSize for Metadata

Source§

impl GetSize for OpenOptions

Source§

impl GetSize for Permissions

Source§

impl GetSize for ReadDir

Source§

impl GetSize for PathBuf

Source§

fn get_heap_size_with_tracker<T>(&self, tracker: T) -> (usize, T)
where T: GetSizeTracker,

Source§

impl GetSize for Instant

Source§

impl GetSize for SystemTime

Source§

impl<I> GetSize for Range<I>
where I: GetSize,

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<I> GetSize for RangeFrom<I>
where I: GetSize,

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<I> GetSize for RangeInclusive<I>
where I: GetSize,

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<I> GetSize for RangeTo<I>
where I: GetSize,

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<I> GetSize for RangeToInclusive<I>
where I: GetSize,

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

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

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<K, V, H> GetSize for HashMap<K, V, H>
where K: GetSize + Eq + Hash, V: GetSize, H: BuildHasher,

Available on crate feature hashbrown only.
Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<K, V, S> GetSize for HashMap<K, V, S>
where S: BuildHasher, K: GetSize, V: GetSize,

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<T> GetSize for &[T]
where T: GetSize,

Source§

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

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

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

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<T> GetSize for *const T

Source§

impl<T> GetSize for *mut T

Source§

impl<T> GetSize for &T

Source§

impl<T> GetSize for &mut T

Source§

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

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

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

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

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

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

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

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<T> GetSize for LinkedList<T>
where T: GetSize,

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

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

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<T> GetSize for Rc<[T]>
where T: GetSize,

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<T> GetSize for Rc<T>
where T: GetSize,

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<T> GetSize for Weak<T>

Source§

impl<T> GetSize for Arc<[T]>
where T: GetSize,

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<T> GetSize for Arc<T>
where T: GetSize,

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<T> GetSize for Weak<T>

Source§

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

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<T> GetSize for RefCell<T>
where T: GetSize,

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<T> GetSize for PhantomData<T>

Source§

impl<T> GetSize for BufReader<T>
where T: GetSize,

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<T> GetSize for BufWriter<T>
where T: GetSize + Write,

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<T> GetSize for OnceLock<T>
where T: GetSize,

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<T> GetSize for Mutex<T>
where T: GetSize,

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<T> GetSize for RwLock<T>
where T: GetSize,

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<T> GetSize for HashTable<T>
where T: GetSize,

Available on crate feature hashbrown only.
Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

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

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<T, H> GetSize for HashSet<T, H>
where T: GetSize + Eq + Hash, H: BuildHasher,

Available on crate feature hashbrown only.
Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<T, S> GetSize for HashSet<T, S>
where S: BuildHasher, T: GetSize,

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<T, const SIZE: usize> GetSize for [T; SIZE]
where T: GetSize,

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<V1> GetSize for (V1,)
where V1: GetSize,

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<V1, V2> GetSize for (V1, V2)
where V1: GetSize, V2: GetSize,

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<V1, V2, V3> GetSize for (V1, V2, V3)
where V1: GetSize, V2: GetSize, V3: GetSize,

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<V1, V2, V3, V4> GetSize for (V1, V2, V3, V4)
where V1: GetSize, V2: GetSize, V3: GetSize, V4: GetSize,

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<V1, V2, V3, V4, V5> GetSize for (V1, V2, V3, V4, V5)
where V1: GetSize, V2: GetSize, V3: GetSize, V4: GetSize, V5: GetSize,

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<V1, V2, V3, V4, V5, V6> GetSize for (V1, V2, V3, V4, V5, V6)
where V1: GetSize, V2: GetSize, V3: GetSize, V4: GetSize, V5: GetSize, V6: GetSize,

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<V1, V2, V3, V4, V5, V6, V7> GetSize for (V1, V2, V3, V4, V5, V6, V7)
where V1: GetSize, V2: GetSize, V3: GetSize, V4: GetSize, V5: GetSize, V6: GetSize, V7: GetSize,

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<V1, V2, V3, V4, V5, V6, V7, V8> GetSize for (V1, V2, V3, V4, V5, V6, V7, V8)
where V1: GetSize, V2: GetSize, V3: GetSize, V4: GetSize, V5: GetSize, V6: GetSize, V7: GetSize, V8: GetSize,

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<V1, V2, V3, V4, V5, V6, V7, V8, V9> GetSize for (V1, V2, V3, V4, V5, V6, V7, V8, V9)
where V1: GetSize, V2: GetSize, V3: GetSize, V4: GetSize, V5: GetSize, V6: GetSize, V7: GetSize, V8: GetSize, V9: GetSize,

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10> GetSize for (V1, V2, V3, V4, V5, V6, V7, V8, V9, V10)
where V1: GetSize, V2: GetSize, V3: GetSize, V4: GetSize, V5: GetSize, V6: GetSize, V7: GetSize, V8: GetSize, V9: GetSize, V10: GetSize,

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11> GetSize for (V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11)
where V1: GetSize, V2: GetSize, V3: GetSize, V4: GetSize, V5: GetSize, V6: GetSize, V7: GetSize, V8: GetSize, V9: GetSize, V10: GetSize, V11: GetSize,

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12> GetSize for (V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12)
where V1: GetSize, V2: GetSize, V3: GetSize, V4: GetSize, V5: GetSize, V6: GetSize, V7: GetSize, V8: GetSize, V9: GetSize, V10: GetSize, V11: GetSize, V12: GetSize,

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13> GetSize for (V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13)
where V1: GetSize, V2: GetSize, V3: GetSize, V4: GetSize, V5: GetSize, V6: GetSize, V7: GetSize, V8: GetSize, V9: GetSize, V10: GetSize, V11: GetSize, V12: GetSize, V13: GetSize,

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14> GetSize for (V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14)
where V1: GetSize, V2: GetSize, V3: GetSize, V4: GetSize, V5: GetSize, V6: GetSize, V7: GetSize, V8: GetSize, V9: GetSize, V10: GetSize, V11: GetSize, V12: GetSize, V13: GetSize, V14: GetSize,

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15> GetSize for (V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15)
where V1: GetSize, V2: GetSize, V3: GetSize, V4: GetSize, V5: GetSize, V6: GetSize, V7: GetSize, V8: GetSize, V9: GetSize, V10: GetSize, V11: GetSize, V12: GetSize, V13: GetSize, V14: GetSize, V15: GetSize,

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Source§

impl<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16> GetSize for (V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16)
where V1: GetSize, V2: GetSize, V3: GetSize, V4: GetSize, V5: GetSize, V6: GetSize, V7: GetSize, V8: GetSize, V9: GetSize, V10: GetSize, V11: GetSize, V12: GetSize, V13: GetSize, V14: GetSize, V15: GetSize, V16: GetSize,

Source§

fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)
where Tr: GetSizeTracker,

Implementors§