Struct RapidInlineHasher

Source
pub struct RapidInlineHasher { /* 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::RapidHasher for default non-forced inline methods.

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

§Example

use std::hash::Hasher;
use rapidhash::RapidInlineHasher;

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

Implementations§

Source§

impl RapidInlineHasher

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 RapidInlineHasher with a custom seed.

Source

pub const fn default_const() -> Self

Create a new RapidInlineHasher using the default seed.

Source

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

Const equivalent to Hasher::write, and marked as #[inline(always)].

This can deliver a large performance improvement when the bytes length is known at compile time.

Source

pub const fn finish_const(&self) -> u64

Const equivalent to Hasher::finish, and marked as #[inline(always)].

Trait Implementations§

Source§

impl Clone for RapidInlineHasher

Source§

fn clone(&self) -> RapidInlineHasher

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 RapidInlineHasher

Source§

fn default() -> Self

Create a new RapidInlineHasher with the default seed.

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

Source§

impl Hasher for RapidInlineHasher

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, marked as #[inline(always)].

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 RapidInlineHasher

Source§

fn eq(&self, other: &RapidInlineHasher) -> 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 RapidInlineHasher

Source§

impl Eq for RapidInlineHasher

Source§

impl StructuralPartialEq for RapidInlineHasher

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.