pub struct SerializingStatefulSponge<Inner> { /* private fields */ }Expand description
An adapter that serializes field elements to binary and delegates to an inner StatefulHasher.
This mirrors SerializingHasher’s conversions from fields to bytes/u32/u64 streams,
but implements the StatefulHasher interface by delegating to an inner stateful hasher
that operates on binary data.
Unlike ChainingHasher (which uses chaining mode H(state || input)), this adapter
preserves proper sponge absorption semantics by directly calling the inner hasher’s
absorb_into method.
Implementations§
Source§impl<Inner> SerializingStatefulSponge<Inner>
impl<Inner> SerializingStatefulSponge<Inner>
pub const fn new(inner: Inner) -> SerializingStatefulSponge<Inner>
Trait Implementations§
Source§impl<F, Inner, T> Alignable<F, T> for SerializingStatefulSponge<Inner>
impl<F, Inner, T> Alignable<F, T> for SerializingStatefulSponge<Inner>
Source§impl<Inner> Clone for SerializingStatefulSponge<Inner>where
Inner: Clone,
impl<Inner> Clone for SerializingStatefulSponge<Inner>where
Inner: Clone,
Source§fn clone(&self) -> SerializingStatefulSponge<Inner>
fn clone(&self) -> SerializingStatefulSponge<Inner>
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<Inner> Debug for SerializingStatefulSponge<Inner>where
Inner: Debug,
impl<Inner> Debug for SerializingStatefulSponge<Inner>where
Inner: Debug,
Source§impl<F, Inner, const M: usize, const OUT: usize> StatefulHasher<[F; M], [[u32; M]; OUT]> for SerializingStatefulSponge<Inner>
impl<F, Inner, const M: usize, const OUT: usize> StatefulHasher<[F; M], [[u32; M]; OUT]> for SerializingStatefulSponge<Inner>
Source§type State = <Inner as StatefulHasher<[u32; M], [[u32; M]; OUT]>>::State
type State = <Inner as StatefulHasher<[u32; M], [[u32; M]; OUT]>>::State
The internal state type that evolves during absorption.
Source§fn absorb_into(
&self,
state: &mut <SerializingStatefulSponge<Inner> as StatefulHasher<[F; M], [[u32; M]; OUT]>>::State,
input: impl IntoIterator<Item = [F; M]>,
)
fn absorb_into( &self, state: &mut <SerializingStatefulSponge<Inner> as StatefulHasher<[F; M], [[u32; M]; OUT]>>::State, input: impl IntoIterator<Item = [F; M]>, )
Absorb elements into the state with overwrite-mode and zero-padding semantics if applicable.
Source§impl<F, Inner, const M: usize, const OUT: usize> StatefulHasher<[F; M], [[u64; M]; OUT]> for SerializingStatefulSponge<Inner>
impl<F, Inner, const M: usize, const OUT: usize> StatefulHasher<[F; M], [[u64; M]; OUT]> for SerializingStatefulSponge<Inner>
Source§type State = <Inner as StatefulHasher<[u64; M], [[u64; M]; OUT]>>::State
type State = <Inner as StatefulHasher<[u64; M], [[u64; M]; OUT]>>::State
The internal state type that evolves during absorption.
Source§fn absorb_into(
&self,
state: &mut <SerializingStatefulSponge<Inner> as StatefulHasher<[F; M], [[u64; M]; OUT]>>::State,
input: impl IntoIterator<Item = [F; M]>,
)
fn absorb_into( &self, state: &mut <SerializingStatefulSponge<Inner> as StatefulHasher<[F; M], [[u64; M]; OUT]>>::State, input: impl IntoIterator<Item = [F; M]>, )
Absorb elements into the state with overwrite-mode and zero-padding semantics if applicable.
Source§impl<F, Inner, const M: usize, const OUT: usize> StatefulHasher<[F; M], [[u8; M]; OUT]> for SerializingStatefulSponge<Inner>
impl<F, Inner, const M: usize, const OUT: usize> StatefulHasher<[F; M], [[u8; M]; OUT]> for SerializingStatefulSponge<Inner>
Source§type State = <Inner as StatefulHasher<[u8; M], [[u8; M]; OUT]>>::State
type State = <Inner as StatefulHasher<[u8; M], [[u8; M]; OUT]>>::State
The internal state type that evolves during absorption.
Source§fn absorb_into(
&self,
state: &mut <SerializingStatefulSponge<Inner> as StatefulHasher<[F; M], [[u8; M]; OUT]>>::State,
input: impl IntoIterator<Item = [F; M]>,
)
fn absorb_into( &self, state: &mut <SerializingStatefulSponge<Inner> as StatefulHasher<[F; M], [[u8; M]; OUT]>>::State, input: impl IntoIterator<Item = [F; M]>, )
Absorb elements into the state with overwrite-mode and zero-padding semantics if applicable.
Source§impl<F, Inner, const OUT: usize> StatefulHasher<F, [u32; OUT]> for SerializingStatefulSponge<Inner>
impl<F, Inner, const OUT: usize> StatefulHasher<F, [u32; OUT]> for SerializingStatefulSponge<Inner>
Source§type State = <Inner as StatefulHasher<u32, [u32; OUT]>>::State
type State = <Inner as StatefulHasher<u32, [u32; OUT]>>::State
The internal state type that evolves during absorption.
Source§fn absorb_into(
&self,
state: &mut <SerializingStatefulSponge<Inner> as StatefulHasher<F, [u32; OUT]>>::State,
input: impl IntoIterator<Item = F>,
)
fn absorb_into( &self, state: &mut <SerializingStatefulSponge<Inner> as StatefulHasher<F, [u32; OUT]>>::State, input: impl IntoIterator<Item = F>, )
Absorb elements into the state with overwrite-mode and zero-padding semantics if applicable.
Source§fn squeeze(
&self,
state: &<SerializingStatefulSponge<Inner> as StatefulHasher<F, [u32; OUT]>>::State,
) -> [u32; OUT]
fn squeeze( &self, state: &<SerializingStatefulSponge<Inner> as StatefulHasher<F, [u32; OUT]>>::State, ) -> [u32; OUT]
Squeeze an output from the current state.
Source§impl<F, Inner, const OUT: usize> StatefulHasher<F, [u64; OUT]> for SerializingStatefulSponge<Inner>
impl<F, Inner, const OUT: usize> StatefulHasher<F, [u64; OUT]> for SerializingStatefulSponge<Inner>
Source§type State = <Inner as StatefulHasher<u64, [u64; OUT]>>::State
type State = <Inner as StatefulHasher<u64, [u64; OUT]>>::State
The internal state type that evolves during absorption.
Source§fn absorb_into(
&self,
state: &mut <SerializingStatefulSponge<Inner> as StatefulHasher<F, [u64; OUT]>>::State,
input: impl IntoIterator<Item = F>,
)
fn absorb_into( &self, state: &mut <SerializingStatefulSponge<Inner> as StatefulHasher<F, [u64; OUT]>>::State, input: impl IntoIterator<Item = F>, )
Absorb elements into the state with overwrite-mode and zero-padding semantics if applicable.
Source§fn squeeze(
&self,
state: &<SerializingStatefulSponge<Inner> as StatefulHasher<F, [u64; OUT]>>::State,
) -> [u64; OUT]
fn squeeze( &self, state: &<SerializingStatefulSponge<Inner> as StatefulHasher<F, [u64; OUT]>>::State, ) -> [u64; OUT]
Squeeze an output from the current state.
Source§impl<F, Inner, const OUT: usize> StatefulHasher<F, [u8; OUT]> for SerializingStatefulSponge<Inner>
impl<F, Inner, const OUT: usize> StatefulHasher<F, [u8; OUT]> for SerializingStatefulSponge<Inner>
Source§type State = <Inner as StatefulHasher<u8, [u8; OUT]>>::State
type State = <Inner as StatefulHasher<u8, [u8; OUT]>>::State
The internal state type that evolves during absorption.
Source§fn absorb_into(
&self,
state: &mut <SerializingStatefulSponge<Inner> as StatefulHasher<F, [u8; OUT]>>::State,
input: impl IntoIterator<Item = F>,
)
fn absorb_into( &self, state: &mut <SerializingStatefulSponge<Inner> as StatefulHasher<F, [u8; OUT]>>::State, input: impl IntoIterator<Item = F>, )
Absorb elements into the state with overwrite-mode and zero-padding semantics if applicable.
Source§fn squeeze(
&self,
state: &<SerializingStatefulSponge<Inner> as StatefulHasher<F, [u8; OUT]>>::State,
) -> [u8; OUT]
fn squeeze( &self, state: &<SerializingStatefulSponge<Inner> as StatefulHasher<F, [u8; OUT]>>::State, ) -> [u8; OUT]
Squeeze an output from the current state.
impl<Inner> Copy for SerializingStatefulSponge<Inner>where
Inner: Copy,
Auto Trait Implementations§
impl<Inner> Freeze for SerializingStatefulSponge<Inner>where
Inner: Freeze,
impl<Inner> RefUnwindSafe for SerializingStatefulSponge<Inner>where
Inner: RefUnwindSafe,
impl<Inner> Send for SerializingStatefulSponge<Inner>where
Inner: Send,
impl<Inner> Sync for SerializingStatefulSponge<Inner>where
Inner: Sync,
impl<Inner> Unpin for SerializingStatefulSponge<Inner>where
Inner: Unpin,
impl<Inner> UnsafeUnpin for SerializingStatefulSponge<Inner>where
Inner: UnsafeUnpin,
impl<Inner> UnwindSafe for SerializingStatefulSponge<Inner>where
Inner: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more