get_size2/impls/feature/
thin_vec.rs1use crate::{GetSize, GetSizeTracker};
2
3impl<T> GetSize for thin_vec::ThinVec<T>
4where
5 T: GetSize,
6{
7 fn get_heap_size_with_tracker<Tr: GetSizeTracker>(&self, tracker: Tr) -> (usize, Tr) {
8 if self.capacity() == 0 {
9 return (0, tracker);
11 }
12
13 let (size, tracker) = self.iter().fold((0, tracker), |(size, tracker), element| {
14 let (elem_size, tracker) = T::get_heap_size_with_tracker(element, tracker);
15 (size + elem_size, tracker)
16 });
17
18 let metadata_size = std::mem::size_of::<usize>() * 2; let allocation_size = self.capacity() * T::get_stack_size();
20 (size + metadata_size + allocation_size, tracker)
21 }
22}