get_size2/impls/feature/
ordermap.rs1use crate::{GetSize, GetSizeTracker};
2
3impl<K, V, S> GetSize for ordermap::OrderMap<K, V, S>
4where
5 K: GetSize,
6 V: GetSize,
7 S: std::hash::BuildHasher,
8{
9 fn get_heap_size_with_tracker<Tr: GetSizeTracker>(&self, tracker: Tr) -> (usize, Tr) {
10 let (size, tracker) = self
11 .iter()
12 .fold((0, tracker), |(size, tracker), (key, value)| {
13 let (key_size, tracker) = K::get_heap_size_with_tracker(key, tracker);
14 let (value_size, tracker) = V::get_heap_size_with_tracker(value, tracker);
15 (size + key_size + value_size, tracker)
16 });
17
18 let allocation_size = self.capacity() * <(K, V)>::get_stack_size();
19 (size + allocation_size, tracker)
20 }
21}
22
23impl<T, S> GetSize for ordermap::OrderSet<T, S>
24where
25 T: GetSize,
26{
27 fn get_heap_size_with_tracker<Tr: GetSizeTracker>(&self, tracker: Tr) -> (usize, Tr) {
28 let (size, tracker) = self.iter().fold((0, tracker), |(size, tracker), element| {
29 let (elem_size, tracker) = T::get_heap_size_with_tracker(element, tracker);
30 (size + elem_size, tracker)
31 });
32
33 let allocation_size = self.capacity() * T::get_stack_size();
34 (size + allocation_size, tracker)
35 }
36}