pub struct RapidHasher<'s, const AVALANCHE: bool, const SPONGE: bool, const COMPACT: bool = false, const PROTECTED: bool = false> { /* private fields */ }Expand description
A Hasher trait compatible hasher that uses the rapidhash
algorithm, and uses #[inline(always)] for all methods.
Using #[inline(always)] can deliver a large performance improvement when hashing complex
objects, but should be benchmarked for your specific use case. If you have HashMaps for many
different types this may come at the cost of some binary size increase.
See crate::fast::RandomState for usage with [std::collections::HashMap].
§Example
use std::hash::Hasher;
use rapidhash::quality::RapidHasher;
let mut hasher = RapidHasher::default();
hasher.write(b"hello world");
let hash = hasher.finish();Implementations§
Source§impl<'s, const AVALANCHE: bool, const SPONGE: bool, const COMPACT: bool, const PROTECTED: bool> RapidHasher<'s, AVALANCHE, SPONGE, COMPACT, PROTECTED>
impl<'s, const AVALANCHE: bool, const SPONGE: bool, const COMPACT: bool, const PROTECTED: bool> RapidHasher<'s, AVALANCHE, SPONGE, COMPACT, PROTECTED>
Sourcepub const DEFAULT_SEED: u64 = super::seed::DEFAULT_SEED
pub const DEFAULT_SEED: u64 = super::seed::DEFAULT_SEED
Default RapidHasher seed.
Sourcepub const fn new(seed: u64) -> Self
pub const fn new(seed: u64) -> Self
Create a new RapidHasher with a custom seed.
See instead crate::quality::RandomState::new or crate::fast::RandomState::new for a random seed and random secret initialization, for minimal DoS resistance.
Sourcepub const fn default_const() -> Self
pub const fn default_const() -> Self
Create a new RapidHasher using the default seed and secrets.
Trait Implementations§
Source§impl<'s, const AVALANCHE: bool, const SPONGE: bool, const COMPACT: bool, const PROTECTED: bool> Clone for RapidHasher<'s, AVALANCHE, SPONGE, COMPACT, PROTECTED>
impl<'s, const AVALANCHE: bool, const SPONGE: bool, const COMPACT: bool, const PROTECTED: bool> Clone for RapidHasher<'s, AVALANCHE, SPONGE, COMPACT, PROTECTED>
Source§fn clone(&self) -> RapidHasher<'s, AVALANCHE, SPONGE, COMPACT, PROTECTED>
fn clone(&self) -> RapidHasher<'s, AVALANCHE, SPONGE, COMPACT, PROTECTED>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl<'s, const AVALANCHE: bool, const SPONGE: bool, const COMPACT: bool, const PROTECTED: bool> Copy for RapidHasher<'s, AVALANCHE, SPONGE, COMPACT, PROTECTED>
Source§impl<const AVALANCHE: bool, const SPONGE: bool, const COMPACT: bool, const PROTECTED: bool> Default for RapidHasher<'_, AVALANCHE, SPONGE, COMPACT, PROTECTED>
impl<const AVALANCHE: bool, const SPONGE: bool, const COMPACT: bool, const PROTECTED: bool> Default for RapidHasher<'_, AVALANCHE, SPONGE, COMPACT, PROTECTED>
Source§fn default() -> Self
fn default() -> Self
Create a new RapidHasher with the default seed.
See crate::inner::RandomState for a [std::hash::BuildHasher] that initializes with a random seed.
Source§impl<const AVALANCHE: bool, const SPONGE: bool, const COMPACT: bool, const PROTECTED: bool> Hasher for RapidHasher<'_, AVALANCHE, SPONGE, COMPACT, PROTECTED>
This implementation implements methods for all integer types as the compiler will (hopefully…)
inline and heavily optimize the rapidhash_core for each. Where the bytes length is known the
compiler can make significant optimisations and saves us writing them out by hand.
impl<const AVALANCHE: bool, const SPONGE: bool, const COMPACT: bool, const PROTECTED: bool> Hasher for RapidHasher<'_, AVALANCHE, SPONGE, COMPACT, PROTECTED>
This implementation implements methods for all integer types as the compiler will (hopefully…) inline and heavily optimize the rapidhash_core for each. Where the bytes length is known the compiler can make significant optimisations and saves us writing them out by hand.
Source§fn write(&mut self, bytes: &[u8])
fn write(&mut self, bytes: &[u8])
Write a byte slice to the hasher, marked as #[inline(always)].
Source§fn write_usize(&mut self, i: usize)
fn write_usize(&mut self, i: usize)
Write an integer to the hasher, marked as #[inline(always)].
Source§fn write_isize(&mut self, i: isize)
fn write_isize(&mut self, i: isize)
Write an integer to the hasher, marked as #[inline(always)].
Source§fn write_u128(&mut self, i: u128)
fn write_u128(&mut self, i: u128)
Write an int to the hasher, marked as #[inline(always)].
Source§fn write_i128(&mut self, i: i128)
fn write_i128(&mut self, i: i128)
Write an int to the hasher, marked as #[inline(always)].
Source§fn write_length_prefix(&mut self, len: usize)
fn write_length_prefix(&mut self, len: usize)
hasher_prefixfree_extras)