pub struct GenericPoseidon2LinearLayersMersenne31 {}Expand description
An implementation of the matrix multiplications in the internal and external layers of Poseidon2.
This can act on [A; WIDTH] for any ring implementing Algebra<Mersenne31>.
If you have either [Mersenne31::Packing; WIDTH] or [Mersenne31; WIDTH] it will be much faster
to use Poseidon2Mersenne31<WIDTH> instead of building a Poseidon2 permutation using this.
Trait Implementations§
Source§impl GenericPoseidon2LinearLayers<16> for GenericPoseidon2LinearLayersMersenne31
impl GenericPoseidon2LinearLayers<16> for GenericPoseidon2LinearLayersMersenne31
Source§fn internal_linear_layer<R: PrimeCharacteristicRing>(state: &mut [R; 16])
fn internal_linear_layer<R: PrimeCharacteristicRing>(state: &mut [R; 16])
A generic implementation of the matrix multiplication
corresponding to the internal linear layer.
Source§fn external_linear_layer<R>(state: &mut [R; WIDTH])where
R: PrimeCharacteristicRing,
fn external_linear_layer<R>(state: &mut [R; WIDTH])where
R: PrimeCharacteristicRing,
A generic implementation of the matrix multiplication
corresponding to the external linear layer.
Source§impl GenericPoseidon2LinearLayers<24> for GenericPoseidon2LinearLayersMersenne31
impl GenericPoseidon2LinearLayers<24> for GenericPoseidon2LinearLayersMersenne31
Source§fn internal_linear_layer<R: PrimeCharacteristicRing>(state: &mut [R; 24])
fn internal_linear_layer<R: PrimeCharacteristicRing>(state: &mut [R; 24])
A generic implementation of the matrix multiplication
corresponding to the internal linear layer.
Source§fn external_linear_layer<R>(state: &mut [R; WIDTH])where
R: PrimeCharacteristicRing,
fn external_linear_layer<R>(state: &mut [R; WIDTH])where
R: PrimeCharacteristicRing,
A generic implementation of the matrix multiplication
corresponding to the external linear layer.
Auto Trait Implementations§
impl Freeze for GenericPoseidon2LinearLayersMersenne31
impl RefUnwindSafe for GenericPoseidon2LinearLayersMersenne31
impl Send for GenericPoseidon2LinearLayersMersenne31
impl Sync for GenericPoseidon2LinearLayersMersenne31
impl Unpin for GenericPoseidon2LinearLayersMersenne31
impl UnwindSafe for GenericPoseidon2LinearLayersMersenne31
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> 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