get_size2/impls/feature/
orx_concurrent_vec.rs1use orx_concurrent_vec::{ConcurrentElement, ConcurrentVec, IntoConcurrentPinnedVec};
2
3use crate::{GetSize, GetSizeTracker};
4
5impl<T, P> GetSize for ConcurrentVec<T, P>
11where
12 T: GetSize,
13 P: IntoConcurrentPinnedVec<ConcurrentElement<T>>,
14{
15 fn get_heap_size_with_tracker<Tr: GetSizeTracker>(&self, tracker: Tr) -> (usize, Tr) {
16 let (heap, tracker) = self.iter().fold((0usize, tracker), |(size, tr), elem| {
17 let (elem_size, tr) = elem.map(|t: &T| T::get_heap_size_with_tracker(t, tr));
18 (size + elem_size, tr)
19 });
20 let allocation = self.capacity() * core::mem::size_of::<ConcurrentElement<T>>();
21 (heap + allocation, tracker)
22 }
23}