use std::collections::HashMap;
pub trait HeapSize {
fn heap_size(&self) -> usize;
}
impl HeapSize for String {
fn heap_size(&self) -> usize {
self.capacity()
}
}
impl<T> HeapSize for Box<T> {
fn heap_size(&self) -> usize {
std::mem::size_of::<T>()
}
}
impl<T> HeapSize for Vec<T> {
fn heap_size(&self) -> usize {
self.capacity() * std::mem::size_of::<T>()
}
}
impl<K, V> HeapSize for HashMap<K, V> {
fn heap_size(&self) -> usize {
let entry_size: usize =
std::mem::size_of::<u64>() + std::mem::size_of::<K>() + std::mem::size_of::<V>();
self.capacity() * entry_size
}
}