//! Defines hash function traits.
use MaybeUninit;
use ReprC;
/// Represents a general hash function. Unlike [`core::hash::Hasher`]
/// trait it doesn't mandate output type, except that it needs to
/// be [`AsRef<[u8]>`]. This makes it suitable for implementing larger
/// hash function like SHA.
/// A marker trait that ensures that the marked function is
/// cryptographicall secure.
///
/// # Safety
///
/// It is up to the implementor to ensure this invariant.
pub unsafe