typesize/libs/
halfbrown.rs

1use crate::{map::generic_map_extra_size, TypeSize};
2
3impl<K: TypeSize, V: TypeSize, S, const GROW_LIMIT: usize> TypeSize
4    for halfbrown::SizedHashMap<K, V, S, GROW_LIMIT>
5{
6    fn extra_size(&self) -> usize {
7        // TODO: Write tests for this.
8
9        let size: usize = self
10            .iter()
11            .take(GROW_LIMIT)
12            .map(|(k, v)| k.extra_size() + v.extra_size())
13            .sum();
14
15        size + generic_map_extra_size(
16            self.iter().skip(GROW_LIMIT),
17            self.capacity().saturating_sub(GROW_LIMIT),
18            self.len().saturating_sub(GROW_LIMIT),
19        )
20    }
21
22    #[cfg(feature = "details")]
23    fn get_collection_item_count(&self) -> Option<usize> {
24        Some(self.len())
25    }
26}