[go: up one dir, main page]

typesize 0.1.3

A library to fetch an accurate estimate of the total memory usage of a value.
Documentation
use std::hash::{BuildHasher, Hash};

use dashmap::{DashMap, RwLock, SharedValue};

use crate::TypeSize;

impl<T: TypeSize> TypeSize for RwLock<T> {
    fn extra_size(&self) -> usize {
        self.read().extra_size()
    }
}

impl<T: TypeSize> TypeSize for SharedValue<T> {
    fn extra_size(&self) -> usize {
        self.get().extra_size()
    }
}

impl<K: TypeSize, V: TypeSize, S> TypeSize for DashMap<K, V, S>
where
    K: Eq + Hash,
    S: Default + BuildHasher + Clone,
{
    fn extra_size(&self) -> usize {
        self.shards().iter().map(TypeSize::get_size).sum::<usize>()
    }

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