dynemit 0.0.1

a crate for working with Dynamic Dispatch in Rust.
Documentation
#[cfg(doc)]
extern crate core as std;

mod macros;

use core::hash::{Hash, Hasher};
use crate::hash_trait_object;
pub use crate::__internal_hash_trait_object;

pub trait DynHash: sealed::Sealed {
    fn dyn_hash(&self, state: &mut dyn Hasher);
}

impl<T: Hash + ?Sized> DynHash for T {
    fn dyn_hash(&self, mut state: &mut dyn Hasher) {
        Hash::hash(self, &mut state);
    }
}

hash_trait_object!(DynHash);
#[doc(hidden)]
pub mod __private {
    pub use core::hash::{Hash, Hasher};
    pub use core::marker::{Send, Sync};
}

mod sealed {
    use core::hash::Hash;

    pub trait Sealed {}
    impl<T: Hash + ?Sized> Sealed for T {}
}