use std::{
any::TypeId,
collections::HashMap,
hash::{BuildHasherDefault, Hasher},
};
#[derive(Default)]
pub struct TypeIdHasher(u64);
impl Hasher for TypeIdHasher {
fn write(&mut self, _: &[u8]) {
unreachable!("TypeId calls write_u64");
}
#[inline]
fn write_u64(&mut self, id: u64) {
self.0 = id;
}
#[inline]
fn finish(&self) -> u64 {
self.0
}
}
pub type TypedMap<T> = HashMap<TypeId, T, BuildHasherDefault<TypeIdHasher>>;