1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
use hashbrown::{HashMap, HashSet};

use crate::{map::generic_map_extra_size, vec::generic_vec_extra_size, TypeSize};

impl<K: TypeSize, V: TypeSize, S> TypeSize for HashMap<K, V, S> {
    fn extra_size(&self) -> usize {
        generic_map_extra_size(self.iter(), self.capacity(), self.len())
    }

    #[cfg(feature = "details")]
    fn get_collection_item_count(&self) -> Option<usize> {
        Some(self.len())
    }
}

impl<T: TypeSize, S> TypeSize for HashSet<T, S> {
    fn extra_size(&self) -> usize {
        generic_vec_extra_size(self.iter(), self.capacity(), self.len())
    }

    #[cfg(feature = "details")]
    fn get_collection_item_count(&self) -> Option<usize> {
        Some(self.len())
    }
}