Skip to main content

GlobalState

Struct GlobalState 

Source
pub struct GlobalState<const AVALANCHE: bool, const SPONGE: bool, const COMPACT: bool, const PROTECTED: bool> { /* private fields */ }
Expand description

A BuildHasher that uses a global seed and secrets, randomized only once on startup.

The global secrets are randomized on the first instantiation, and then every subsequent instance of GlobalState will re-use the same seed and secrets, ensuring consistent hash outputs for the duration of the program.

Implementations§

Source§

impl<const AVALANCHE: bool, const SPONGE: bool, const COMPACT: bool, const PROTECTED: bool> GlobalState<AVALANCHE, SPONGE, COMPACT, PROTECTED>

Source

pub fn new() -> Self

Create a new global state with a global seed and secrets.

The seed and secrets will be randomized on the first instantiation of GlobalState, but all subsequent instances will share the same seed and secrets.

On platforms which do not support atomic pointers, the secrets will be the default rapidhash secrets, which are not randomized. Therefore, targets without atomic pointer support will not have minimal HashDoS resistance guarantees.

Trait Implementations§

Source§

impl<const AVALANCHE: bool, const SPONGE: bool, const COMPACT: bool, const PROTECTED: bool> BuildHasher for GlobalState<AVALANCHE, SPONGE, COMPACT, PROTECTED>

Source§

type Hasher = RapidHasher<'static, AVALANCHE, SPONGE, COMPACT, PROTECTED>

Type of the hasher that will be created.
Source§

fn build_hasher(&self) -> Self::Hasher

Creates a new hasher. Read more
1.71.0 · Source§

fn hash_one<T>(&self, x: T) -> u64
where T: Hash, Self: Sized, Self::Hasher: Hasher,

Calculates the hash of a single value. Read more
Source§

impl<const AVALANCHE: bool, const SPONGE: bool, const COMPACT: bool, const PROTECTED: bool> Clone for GlobalState<AVALANCHE, SPONGE, COMPACT, PROTECTED>

Source§

fn clone(&self) -> GlobalState<AVALANCHE, SPONGE, COMPACT, PROTECTED>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl<const AVALANCHE: bool, const SPONGE: bool, const COMPACT: bool, const PROTECTED: bool> Copy for GlobalState<AVALANCHE, SPONGE, COMPACT, PROTECTED>

Source§

impl<const AVALANCHE: bool, const SPONGE: bool, const COMPACT: bool, const PROTECTED: bool> Debug for GlobalState<AVALANCHE, SPONGE, COMPACT, PROTECTED>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<const AVALANCHE: bool, const SPONGE: bool, const COMPACT: bool, const PROTECTED: bool> Default for GlobalState<AVALANCHE, SPONGE, COMPACT, PROTECTED>

Warning that GlobalState only randomizes the seed on platforms that support atomic pointers.

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<const AVALANCHE: bool, const SPONGE: bool, const COMPACT: bool, const PROTECTED: bool> Eq for GlobalState<AVALANCHE, SPONGE, COMPACT, PROTECTED>

Source§

impl<const AVALANCHE: bool, const SPONGE: bool, const COMPACT: bool, const PROTECTED: bool> PartialEq for GlobalState<AVALANCHE, SPONGE, COMPACT, PROTECTED>

Source§

fn eq(&self, other: &GlobalState<AVALANCHE, SPONGE, COMPACT, PROTECTED>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · 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<const AVALANCHE: bool, const SPONGE: bool, const COMPACT: bool, const PROTECTED: bool> StructuralPartialEq for GlobalState<AVALANCHE, SPONGE, COMPACT, PROTECTED>

Auto Trait Implementations§

§

impl<const AVALANCHE: bool, const SPONGE: bool, const COMPACT: bool, const PROTECTED: bool> Freeze for GlobalState<AVALANCHE, SPONGE, COMPACT, PROTECTED>

§

impl<const AVALANCHE: bool, const SPONGE: bool, const COMPACT: bool, const PROTECTED: bool> RefUnwindSafe for GlobalState<AVALANCHE, SPONGE, COMPACT, PROTECTED>

§

impl<const AVALANCHE: bool, const SPONGE: bool, const COMPACT: bool, const PROTECTED: bool> Send for GlobalState<AVALANCHE, SPONGE, COMPACT, PROTECTED>

§

impl<const AVALANCHE: bool, const SPONGE: bool, const COMPACT: bool, const PROTECTED: bool> Sync for GlobalState<AVALANCHE, SPONGE, COMPACT, PROTECTED>

§

impl<const AVALANCHE: bool, const SPONGE: bool, const COMPACT: bool, const PROTECTED: bool> Unpin for GlobalState<AVALANCHE, SPONGE, COMPACT, PROTECTED>

§

impl<const AVALANCHE: bool, const SPONGE: bool, const COMPACT: bool, const PROTECTED: bool> UnsafeUnpin for GlobalState<AVALANCHE, SPONGE, COMPACT, PROTECTED>

§

impl<const AVALANCHE: bool, const SPONGE: bool, const COMPACT: bool, const PROTECTED: bool> UnwindSafe for GlobalState<AVALANCHE, SPONGE, COMPACT, PROTECTED>

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, 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.