pub trait GetSize: Sized {
// Provided methods
fn get_stack_size() -> usize { ... }
fn get_heap_size(&self) -> usize { ... }
fn get_heap_size_with_tracker<T: GetSizeTracker>(
&self,
tracker: T,
) -> (usize, T) { ... }
fn get_size(&self) -> usize { ... }
fn get_size_with_tracker<T: GetSizeTracker>(&self, tracker: T) -> (usize, T) { ... }
}Expand description
Determine the size in bytes an object occupies inside RAM.
Provided Methods§
Sourcefn get_stack_size() -> usize
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.
Sourcefn get_heap_size(&self) -> usize
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.
Sourcefn get_heap_size_with_tracker<T: GetSizeTracker>(
&self,
tracker: T,
) -> (usize, T)
fn get_heap_size_with_tracker<T: GetSizeTracker>( &self, tracker: T, ) -> (usize, T)
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.
Sourcefn get_size(&self) -> usize
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.
Sourcefn get_size_with_tracker<T: GetSizeTracker>(&self, tracker: T) -> (usize, T)
fn get_size_with_tracker<T: GetSizeTracker>(&self, tracker: T) -> (usize, T)
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§
impl GetSize for &str
Source§impl GetSize for &CStr
impl GetSize for &CStr
fn get_heap_size_with_tracker<T: GetSizeTracker>( &self, tracker: T, ) -> (usize, T)
Source§impl GetSize for &OsStr
impl GetSize for &OsStr
fn get_heap_size_with_tracker<T: GetSizeTracker>( &self, tracker: T, ) -> (usize, T)
impl GetSize for &Path
impl GetSize for Ordering
impl GetSize for Infallible
impl GetSize for Ordering
impl GetSize for bool
impl GetSize for char
impl GetSize for f32
impl GetSize for f64
impl GetSize for i8
impl GetSize for i16
impl GetSize for i32
impl GetSize for i64
impl GetSize for i128
impl GetSize for isize
impl GetSize for u8
impl GetSize for u16
impl GetSize for u32
impl GetSize for u64
impl GetSize for u128
impl GetSize for ()
impl GetSize for usize
Source§impl GetSize for Box<str>
impl GetSize for Box<str>
fn get_heap_size_with_tracker<T: GetSizeTracker>( &self, tracker: T, ) -> (usize, T)
Source§impl GetSize for CString
impl GetSize for CString
fn get_heap_size_with_tracker<T: GetSizeTracker>( &self, tracker: T, ) -> (usize, T)
Source§impl GetSize for Rc<str>
impl GetSize for Rc<str>
fn get_heap_size_with_tracker<T: GetSizeTracker>( &self, tracker: T, ) -> (usize, T)
Source§impl GetSize for String
impl GetSize for String
fn get_heap_size_with_tracker<T: GetSizeTracker>( &self, tracker: T, ) -> (usize, T)
Source§impl GetSize for Arc<str>
impl GetSize for Arc<str>
fn get_heap_size_with_tracker<T: GetSizeTracker>( &self, tracker: T, ) -> (usize, T)
impl GetSize for PhantomPinned
impl GetSize for RangeFull
impl GetSize for AtomicBool
impl GetSize for AtomicI8
impl GetSize for AtomicI16
impl GetSize for AtomicI32
impl GetSize for AtomicI64
impl GetSize for AtomicIsize
impl GetSize for AtomicU8
impl GetSize for AtomicU16
impl GetSize for AtomicU32
impl GetSize for AtomicU64
impl GetSize for AtomicUsize
impl GetSize for Duration
Source§impl GetSize for OsString
impl GetSize for OsString
fn get_heap_size_with_tracker<T: GetSizeTracker>( &self, tracker: T, ) -> (usize, T)
impl GetSize for DirBuilder
impl GetSize for DirEntry
impl GetSize for File
impl GetSize for FileType
impl GetSize for Metadata
impl GetSize for OpenOptions
impl GetSize for Permissions
impl GetSize for ReadDir
Source§impl GetSize for PathBuf
impl GetSize for PathBuf
fn get_heap_size_with_tracker<T: GetSizeTracker>( &self, tracker: T, ) -> (usize, T)
impl GetSize for Instant
impl GetSize for SystemTime
Source§impl GetSize for Bytes
Available on crate feature bytes only.
impl GetSize for Bytes
bytes only.fn get_heap_size_with_tracker<T: GetSizeTracker>( &self, tracker: T, ) -> (usize, T)
Source§impl GetSize for BytesMut
Available on crate feature bytes only.
impl GetSize for BytesMut
bytes only.fn get_heap_size_with_tracker<T: GetSizeTracker>( &self, tracker: T, ) -> (usize, T)
impl GetSize for TzOffset
chrono-tz only.impl GetSize for NaiveDate
chrono only.impl GetSize for NaiveDateTime
chrono only.impl GetSize for NaiveTime
chrono only.impl GetSize for FixedOffset
chrono only.impl GetSize for Utc
chrono only.impl GetSize for TimeDelta
chrono only.Source§impl GetSize for CompactString
Available on crate feature compact-str only.
impl GetSize for CompactString
compact-str only.fn get_heap_size_with_tracker<T: GetSizeTracker>( &self, tracker: T, ) -> (usize, T)
Source§impl GetSize for Url
Available on crate feature url only.
impl GetSize for Url
url only.fn get_heap_size_with_tracker<T: GetSizeTracker>( &self, tracker: T, ) -> (usize, T)
impl GetSize for NonZeroI8
impl GetSize for NonZeroI16
impl GetSize for NonZeroI32
impl GetSize for NonZeroI64
impl GetSize for NonZeroI128
impl GetSize for NonZeroIsize
impl GetSize for NonZeroU8
impl GetSize for NonZeroU16
impl GetSize for NonZeroU32
impl GetSize for NonZeroU64
impl GetSize for NonZeroU128
impl GetSize for NonZeroUsize
Source§impl<A: Array> GetSize for SmallVec<A>
Available on crate feature smallvec only.
impl<A: Array> GetSize for SmallVec<A>
smallvec only.fn get_heap_size_with_tracker<Tr: GetSizeTracker>( &self, tracker: Tr, ) -> (usize, Tr)
Source§impl<I: GetSize> GetSize for Range<I>
impl<I: GetSize> GetSize for Range<I>
fn get_heap_size_with_tracker<Tr: GetSizeTracker>( &self, tracker: Tr, ) -> (usize, Tr)
Source§impl<I: GetSize> GetSize for RangeFrom<I>
impl<I: GetSize> GetSize for RangeFrom<I>
fn get_heap_size_with_tracker<Tr: GetSizeTracker>( &self, tracker: Tr, ) -> (usize, Tr)
Source§impl<I: GetSize> GetSize for RangeInclusive<I>
impl<I: GetSize> GetSize for RangeInclusive<I>
fn get_heap_size_with_tracker<Tr: GetSizeTracker>( &self, tracker: Tr, ) -> (usize, Tr)
Source§impl<I: GetSize> GetSize for RangeTo<I>
impl<I: GetSize> GetSize for RangeTo<I>
fn get_heap_size_with_tracker<Tr: GetSizeTracker>( &self, tracker: Tr, ) -> (usize, Tr)
Source§impl<I: GetSize> GetSize for RangeToInclusive<I>
impl<I: GetSize> GetSize for RangeToInclusive<I>
fn get_heap_size_with_tracker<Tr: GetSizeTracker>( &self, tracker: Tr, ) -> (usize, Tr)
Source§impl<K, V> GetSize for BTreeMap<K, V>
impl<K, V> GetSize for BTreeMap<K, V>
fn get_heap_size_with_tracker<Tr: GetSizeTracker>( &self, tracker: Tr, ) -> (usize, Tr)
Source§impl<K, V, H> GetSize for HashMap<K, V, H>
Available on crate feature hashbrown only.
impl<K, V, H> GetSize for HashMap<K, V, H>
hashbrown only.fn get_heap_size_with_tracker<Tr: GetSizeTracker>( &self, tracker: Tr, ) -> (usize, Tr)
Source§impl<K, V, S> GetSize for IndexMap<K, V, S>
Available on crate feature indexmap only.
impl<K, V, S> GetSize for IndexMap<K, V, S>
indexmap only.fn get_heap_size_with_tracker<Tr: GetSizeTracker>( &self, tracker: Tr, ) -> (usize, Tr)
Source§impl<K, V, S: BuildHasher> GetSize for HashMap<K, V, S>
impl<K, V, S: BuildHasher> GetSize for HashMap<K, V, S>
fn get_heap_size_with_tracker<Tr: GetSizeTracker>( &self, tracker: Tr, ) -> (usize, Tr)
impl<T> GetSize for &[T]where
T: GetSize,
Source§impl<T> GetSize for Cow<'_, T>
impl<T> GetSize for Cow<'_, T>
fn get_heap_size_with_tracker<Tr: GetSizeTracker>( &self, tracker: Tr, ) -> (usize, Tr)
Source§impl<T> GetSize for Option<T>where
T: GetSize,
impl<T> GetSize for Option<T>where
T: GetSize,
fn get_heap_size_with_tracker<Tr: GetSizeTracker>( &self, tracker: Tr, ) -> (usize, Tr)
impl<T> GetSize for *const T
impl<T> GetSize for *mut T
impl<T> GetSize for &T
impl<T> GetSize for &mut T
Source§impl<T> GetSize for Box<[T]>where
T: GetSize,
impl<T> GetSize for Box<[T]>where
T: GetSize,
fn get_heap_size_with_tracker<Tr: GetSizeTracker>( &self, tracker: Tr, ) -> (usize, Tr)
Source§impl<T> GetSize for Box<T>where
T: GetSize,
impl<T> GetSize for Box<T>where
T: GetSize,
fn get_heap_size_with_tracker<Tr: GetSizeTracker>( &self, tracker: Tr, ) -> (usize, Tr)
Source§impl<T> GetSize for BinaryHeap<T>where
T: GetSize,
impl<T> GetSize for BinaryHeap<T>where
T: GetSize,
fn get_heap_size_with_tracker<Tr: GetSizeTracker>( &self, tracker: Tr, ) -> (usize, Tr)
Source§impl<T> GetSize for BTreeSet<T>where
T: GetSize,
impl<T> GetSize for BTreeSet<T>where
T: GetSize,
fn get_heap_size_with_tracker<Tr: GetSizeTracker>( &self, tracker: Tr, ) -> (usize, Tr)
Source§impl<T> GetSize for LinkedList<T>where
T: GetSize,
impl<T> GetSize for LinkedList<T>where
T: GetSize,
fn get_heap_size_with_tracker<Tr: GetSizeTracker>( &self, tracker: Tr, ) -> (usize, Tr)
Source§impl<T> GetSize for VecDeque<T>where
T: GetSize,
impl<T> GetSize for VecDeque<T>where
T: GetSize,
fn get_heap_size_with_tracker<Tr: GetSizeTracker>( &self, tracker: Tr, ) -> (usize, Tr)
Source§impl<T> GetSize for Rc<[T]>where
T: GetSize,
impl<T> GetSize for Rc<[T]>where
T: GetSize,
fn get_heap_size_with_tracker<Tr: GetSizeTracker>( &self, tracker: Tr, ) -> (usize, Tr)
Source§impl<T> GetSize for Rc<T>where
T: GetSize,
impl<T> GetSize for Rc<T>where
T: GetSize,
fn get_heap_size_with_tracker<Tr: GetSizeTracker>( &self, tracker: Tr, ) -> (usize, Tr)
impl<T> GetSize for Weak<T>
Source§impl<T> GetSize for Arc<[T]>where
T: GetSize,
impl<T> GetSize for Arc<[T]>where
T: GetSize,
fn get_heap_size_with_tracker<Tr: GetSizeTracker>( &self, tracker: Tr, ) -> (usize, Tr)
Source§impl<T> GetSize for Arc<T>where
T: GetSize,
impl<T> GetSize for Arc<T>where
T: GetSize,
fn get_heap_size_with_tracker<Tr: GetSizeTracker>( &self, tracker: Tr, ) -> (usize, Tr)
impl<T> GetSize for Weak<T>
Source§impl<T> GetSize for Vec<T>where
T: GetSize,
impl<T> GetSize for Vec<T>where
T: GetSize,
fn get_heap_size_with_tracker<Tr: GetSizeTracker>( &self, tracker: Tr, ) -> (usize, Tr)
Source§impl<T> GetSize for RefCell<T>where
T: GetSize,
impl<T> GetSize for RefCell<T>where
T: GetSize,
fn get_heap_size_with_tracker<Tr: GetSizeTracker>( &self, tracker: Tr, ) -> (usize, Tr)
impl<T> GetSize for PhantomData<T>
Source§impl<T> GetSize for BufReader<T>where
T: GetSize,
impl<T> GetSize for BufReader<T>where
T: GetSize,
fn get_heap_size_with_tracker<Tr: GetSizeTracker>( &self, tracker: Tr, ) -> (usize, Tr)
Source§impl<T> GetSize for BufWriter<T>
impl<T> GetSize for BufWriter<T>
fn get_heap_size_with_tracker<Tr: GetSizeTracker>( &self, tracker: Tr, ) -> (usize, Tr)
Source§impl<T> GetSize for OnceLock<T>where
T: GetSize,
impl<T> GetSize for OnceLock<T>where
T: GetSize,
fn get_heap_size_with_tracker<Tr: GetSizeTracker>( &self, tracker: Tr, ) -> (usize, Tr)
Source§impl<T> GetSize for Mutex<T>where
T: GetSize,
impl<T> GetSize for Mutex<T>where
T: GetSize,
fn get_heap_size_with_tracker<Tr: GetSizeTracker>( &self, tracker: Tr, ) -> (usize, Tr)
Source§impl<T> GetSize for RwLock<T>where
T: GetSize,
impl<T> GetSize for RwLock<T>where
T: GetSize,
fn get_heap_size_with_tracker<Tr: GetSizeTracker>( &self, tracker: Tr, ) -> (usize, Tr)
Source§impl<T> GetSize for HashTable<T>where
T: GetSize,
Available on crate feature hashbrown only.
impl<T> GetSize for HashTable<T>where
T: GetSize,
hashbrown only.fn get_heap_size_with_tracker<Tr: GetSizeTracker>( &self, tracker: Tr, ) -> (usize, Tr)
Source§impl<T> GetSize for ThinVec<T>where
T: GetSize,
Available on crate feature thin-vec only.
impl<T> GetSize for ThinVec<T>where
T: GetSize,
thin-vec only.fn get_heap_size_with_tracker<Tr: GetSizeTracker>( &self, tracker: Tr, ) -> (usize, Tr)
Source§impl<T, E> GetSize for Result<T, E>
impl<T, E> GetSize for Result<T, E>
fn get_heap_size_with_tracker<Tr: GetSizeTracker>( &self, tracker: Tr, ) -> (usize, Tr)
Source§impl<T, H> GetSize for HashSet<T, H>
Available on crate feature hashbrown only.
impl<T, H> GetSize for HashSet<T, H>
hashbrown only.fn get_heap_size_with_tracker<Tr: GetSizeTracker>( &self, tracker: Tr, ) -> (usize, Tr)
Source§impl<T, S> GetSize for IndexSet<T, S>where
T: GetSize,
Available on crate feature indexmap only.
impl<T, S> GetSize for IndexSet<T, S>where
T: GetSize,
indexmap only.fn get_heap_size_with_tracker<Tr: GetSizeTracker>( &self, tracker: Tr, ) -> (usize, Tr)
Source§impl<T, S: BuildHasher> GetSize for HashSet<T, S>where
T: GetSize,
impl<T, S: BuildHasher> GetSize for HashSet<T, S>where
T: GetSize,
fn get_heap_size_with_tracker<Tr: GetSizeTracker>( &self, tracker: Tr, ) -> (usize, Tr)
Source§impl<T, const SIZE: usize> GetSize for [T; SIZE]where
T: GetSize,
impl<T, const SIZE: usize> GetSize for [T; SIZE]where
T: GetSize,
fn get_heap_size_with_tracker<Tr: GetSizeTracker>( &self, tracker: Tr, ) -> (usize, Tr)
Source§impl<Tz: TimeZone> GetSize for DateTime<Tz>
Available on crate feature chrono only.
impl<Tz: TimeZone> GetSize for DateTime<Tz>
chrono only.