Struct RapidHasher

Source
pub struct RapidHasher(/* private fields */);
Expand description

A Hasher trait compatible hasher that uses the rapidhash algorithm.

See RapidInlineHasher for an #[inline(always)] version of this hasher, which can deliver speed improvements of around 30% when hashing complex objects.

See RapidHashBuilder for usage with std::collections::HashMap.

§Example

use std::hash::Hasher;
use rapidhash::RapidHasher;

let mut hasher = RapidHasher::default();
hasher.write(b"hello world");
let hash = hasher.finish();

Implementations§

Source§

impl RapidHasher

Source

pub const DEFAULT_SEED: u64 = 13_679_853_920_966_426_665u64

Default RapidHasher seed.

Source

pub const fn new(seed: u64) -> Self

Create a new RapidHasher with a custom seed.

Source

pub const fn default_const() -> Self

Create a new RapidHasher using the default seed.

Source

pub const fn write_const(&self, bytes: &[u8]) -> Self

Const equivalent to Hasher::write.

§Example
use rapidhash::RapidHasher;

let hasher = RapidHasher::default_const();
let hash = hasher
    .write_const(b"some bytes")
    .write_const(b"and some more bytes")
    .finish_const();
Source

pub const fn finish_const(&self) -> u64

Const equivalent to Hasher::finish.

Trait Implementations§

Source§

impl Clone for RapidHasher

Source§

fn clone(&self) -> RapidHasher

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Default for RapidHasher

Source§

fn default() -> Self

Create a new RapidHasher with the default seed.

See crate::RapidRandomState for a std::hash::BuildHasher that initialises with a random seed.

Source§

impl Hasher for RapidHasher

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])

Write a byte slice to the hasher.

Source§

fn finish(&self) -> u64

Returns the hash value for the values written so far. Read more
Source§

fn write_u8(&mut self, i: u8)

Writes a single u8 into this hasher.
Source§

fn write_u16(&mut self, i: u16)

Writes a single u16 into this hasher.
Source§

fn write_u32(&mut self, i: u32)

Writes a single u32 into this hasher.
Source§

fn write_u64(&mut self, i: u64)

Writes a single u64 into this hasher.
Source§

fn write_u128(&mut self, i: u128)

Writes a single u128 into this hasher.
Source§

fn write_usize(&mut self, i: usize)

Writes a single usize into this hasher.
Source§

fn write_i8(&mut self, i: i8)

Writes a single i8 into this hasher.
Source§

fn write_i16(&mut self, i: i16)

Writes a single i16 into this hasher.
Source§

fn write_i32(&mut self, i: i32)

Writes a single i32 into this hasher.
Source§

fn write_i64(&mut self, i: i64)

Writes a single i64 into this hasher.
Source§

fn write_i128(&mut self, i: i128)

Writes a single i128 into this hasher.
Source§

fn write_isize(&mut self, i: isize)

Writes a single isize into this hasher.
Source§

fn write_length_prefix(&mut self, len: usize)

🔬This is a nightly-only experimental API. (hasher_prefixfree_extras)
Writes a length prefix into this hasher, as part of being prefix-free. Read more
Source§

fn write_str(&mut self, s: &str)

🔬This is a nightly-only experimental API. (hasher_prefixfree_extras)
Writes a single str into this hasher. Read more
Source§

impl PartialEq for RapidHasher

Source§

fn eq(&self, other: &RapidHasher) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for RapidHasher

Source§

impl Eq for RapidHasher

Source§

impl StructuralPartialEq for RapidHasher

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.