get_size2/impls/feature/
roaring.rs1use crate::{GetSize, GetSizeTracker};
2
3impl GetSize for roaring::RoaringBitmap {
10 fn get_heap_size_with_tracker<Tr: GetSizeTracker>(&self, tracker: Tr) -> (usize, Tr) {
11 let s = self.statistics();
12 let bytes =
13 s.n_bytes_array_containers + s.n_bytes_bitset_containers + s.n_bytes_run_containers;
14 debug_assert!(bytes <= usize::MAX as u64);
17 (usize::try_from(bytes).unwrap_or(usize::MAX), tracker)
18 }
19}
20
21impl GetSize for roaring::RoaringTreemap {
25 fn get_heap_size_with_tracker<Tr: GetSizeTracker>(&self, tracker: Tr) -> (usize, Tr) {
26 self.bitmaps()
27 .fold((0, tracker), |(size, tracker), (key, bitmap)| {
28 let (key_size, tracker) = u32::get_size_with_tracker(&key, tracker);
29 let (bm_size, tracker) =
30 roaring::RoaringBitmap::get_size_with_tracker(bitmap, tracker);
31 (size + key_size + bm_size, tracker)
32 })
33 }
34}