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§
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>(&self, tracker: T) -> (usize, T)where
T: GetSizeTracker,
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.
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>(&self, tracker: T) -> (usize, T)where
T: GetSizeTracker,
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§
impl GetSize for &str
Source§impl GetSize for &CStr
impl GetSize for &CStr
fn get_heap_size_with_tracker<T>(&self, tracker: T) -> (usize, T)where
T: GetSizeTracker,
Source§impl GetSize for &OsStr
impl GetSize for &OsStr
fn get_heap_size_with_tracker<T>(&self, tracker: T) -> (usize, T)where
T: GetSizeTracker,
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>(&self, tracker: T) -> (usize, T)where
T: GetSizeTracker,
Source§impl GetSize for CString
impl GetSize for CString
fn get_heap_size_with_tracker<T>(&self, tracker: T) -> (usize, T)where
T: GetSizeTracker,
Source§impl GetSize for Rc<str>
impl GetSize for Rc<str>
fn get_heap_size_with_tracker<T>(&self, tracker: T) -> (usize, T)where
T: GetSizeTracker,
Source§impl GetSize for String
impl GetSize for String
fn get_heap_size_with_tracker<T>(&self, tracker: T) -> (usize, T)where
T: GetSizeTracker,
Source§impl GetSize for Arc<str>
impl GetSize for Arc<str>
fn get_heap_size_with_tracker<T>(&self, tracker: T) -> (usize, T)where
T: GetSizeTracker,
impl GetSize for PhantomPinned
impl GetSize for NonZero<i8>
impl GetSize for NonZero<i16>
impl GetSize for NonZero<i32>
impl GetSize for NonZero<i64>
impl GetSize for NonZero<i128>
impl GetSize for NonZero<isize>
impl GetSize for NonZero<u8>
impl GetSize for NonZero<u16>
impl GetSize for NonZero<u32>
impl GetSize for NonZero<u64>
impl GetSize for NonZero<u128>
impl GetSize for NonZero<usize>
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>(&self, tracker: T) -> (usize, T)where
T: GetSizeTracker,
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>(&self, tracker: T) -> (usize, T)where
T: GetSizeTracker,
impl GetSize for Instant
impl GetSize for SystemTime
Source§impl<I> GetSize for Range<I>where
I: GetSize,
impl<I> GetSize for Range<I>where
I: GetSize,
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,
impl<I> GetSize for RangeFrom<I>where
I: GetSize,
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,
impl<I> GetSize for RangeInclusive<I>where
I: GetSize,
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,
impl<I> GetSize for RangeTo<I>where
I: GetSize,
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,
impl<I> GetSize for RangeToInclusive<I>where
I: GetSize,
fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)where
Tr: GetSizeTracker,
Source§impl<K, V> GetSize for BTreeMap<K, V>
impl<K, V> GetSize for BTreeMap<K, V>
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>
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>(&self, tracker: Tr) -> (usize, Tr)where
Tr: GetSizeTracker,
Source§impl<K, V, S> GetSize for HashMap<K, V, S>
impl<K, V, S> GetSize for HashMap<K, V, S>
fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)where
Tr: GetSizeTracker,
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>(&self, tracker: Tr) -> (usize, Tr)where
Tr: GetSizeTracker,
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>(&self, tracker: Tr) -> (usize, Tr)where
Tr: GetSizeTracker,
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>(&self, tracker: Tr) -> (usize, Tr)where
Tr: GetSizeTracker,
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>(&self, tracker: Tr) -> (usize, Tr)where
Tr: GetSizeTracker,
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>(&self, tracker: Tr) -> (usize, Tr)where
Tr: GetSizeTracker,
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>(&self, tracker: Tr) -> (usize, Tr)where
Tr: GetSizeTracker,
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>(&self, tracker: Tr) -> (usize, Tr)where
Tr: GetSizeTracker,
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>(&self, tracker: Tr) -> (usize, Tr)where
Tr: GetSizeTracker,
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>(&self, tracker: Tr) -> (usize, Tr)where
Tr: GetSizeTracker,
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>(&self, tracker: Tr) -> (usize, Tr)where
Tr: GetSizeTracker,
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>(&self, tracker: Tr) -> (usize, Tr)where
Tr: GetSizeTracker,
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>(&self, tracker: Tr) -> (usize, Tr)where
Tr: GetSizeTracker,
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>(&self, tracker: Tr) -> (usize, Tr)where
Tr: GetSizeTracker,
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>(&self, tracker: Tr) -> (usize, Tr)where
Tr: GetSizeTracker,
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>(&self, tracker: Tr) -> (usize, Tr)where
Tr: GetSizeTracker,
Source§impl<T> GetSize for BufWriter<T>
impl<T> GetSize for BufWriter<T>
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,
impl<T> GetSize for OnceLock<T>where
T: GetSize,
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,
impl<T> GetSize for Mutex<T>where
T: GetSize,
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,
impl<T> GetSize for RwLock<T>where
T: GetSize,
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.
impl<T> GetSize for HashTable<T>where
T: GetSize,
hashbrown only.fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)where
Tr: GetSizeTracker,
Source§impl<T, E> GetSize for Result<T, E>
impl<T, E> GetSize for Result<T, E>
fn get_heap_size_with_tracker<Tr>(&self, tracker: Tr) -> (usize, Tr)where
Tr: GetSizeTracker,
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.