#![deny(clippy::pedantic, missing_docs)]
pub mod h2b;
pub mod hbb64;
pub mod h3b;
pub mod prelude;
use std::hash::{BuildHasher, BuildHasherDefault, Hasher as _};
pub use prelude::*;
#[derive(Debug, Eq, PartialEq, Hash, Clone)]
#[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))]
pub struct AHasherBuilder {
state: u64,
}
impl Default for AHasherBuilder {
fn default() -> Self {
Self {
state: rand::random(),
}
}
}
impl BuildHasher for AHasherBuilder {
type Hasher = ahash::AHasher;
fn build_hasher(&self) -> Self::Hasher {
let mut h = ahash::AHasher::default();
h.write_u64(self.state);
h
}
}
pub type AHasherDefaultBuilder = BuildHasherDefault<ahash::AHasher>;
#[cfg(feature = "siphash")]
#[derive(Debug, Eq, PartialEq, Hash, Clone)]
#[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))]
pub struct SipHasher13Builder {
state: u64,
}
#[cfg(feature = "siphash")]
impl Default for SipHasher13Builder {
fn default() -> Self {
Self {
state: rand::random(),
}
}
}
#[cfg(feature = "siphash")]
impl BuildHasher for SipHasher13Builder {
type Hasher = siphasher::sip::SipHasher13;
fn build_hasher(&self) -> Self::Hasher {
let mut h = siphasher::sip::SipHasher13::default();
h.write_u64(self.state);
h
}
}
#[cfg(feature = "siphash")]
pub type SipHasher13DefaultBuilder = BuildHasherDefault<siphasher::sip::SipHasher13>;