Trait InternalLayer

Source
pub trait InternalLayer<FA, const WIDTH: usize, const D: u64>: Sync + Clone
where FA: FieldAlgebra,
{ // Required method fn permute_state(&self, state: &mut [FA; WIDTH]); }
Expand description

A trait containing all data needed to implement the internal layers of Poseidon2.

Required Methods§

Source

fn permute_state(&self, state: &mut [FA; WIDTH])

Perform the internal layers of the Poseidon2 permutation on the given state.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

impl<FA: FieldAlgebra, LinearLayers, const WIDTH: usize> InternalLayer<FA, WIDTH, BABY_BEAR_POSEIDON2_SBOX_DEGREE> for Poseidon2InternalLayer<FA::F, LinearLayers>
where LinearLayers: GenericPoseidon2LinearLayers<FA, WIDTH>,

impl<FA: FieldAlgebra<F = Goldilocks>> InternalLayer<FA, 12, GOLDILOCKS_S_BOX_DEGREE> for Poseidon2InternalLayerGoldilocks

impl<FA: FieldAlgebra<F = Goldilocks>> InternalLayer<FA, 16, GOLDILOCKS_S_BOX_DEGREE> for Poseidon2InternalLayerGoldilocks

impl<FA: FieldAlgebra<F = Goldilocks>> InternalLayer<FA, 20, GOLDILOCKS_S_BOX_DEGREE> for Poseidon2InternalLayerGoldilocks

impl<FA: FieldAlgebra<F = Goldilocks>> InternalLayer<FA, 8, GOLDILOCKS_S_BOX_DEGREE> for Poseidon2InternalLayerGoldilocks

impl<FP, ILP, const WIDTH: usize, const D: u64> InternalLayer<PackedMontyField31Neon<FP>, WIDTH, D> for Poseidon2InternalLayerMonty31<FP, WIDTH, ILP>
where FP: FieldParameters, ILP: InternalLayerBaseParameters<FP, WIDTH>,

impl<FP, const WIDTH: usize, P2P, const D: u64> InternalLayer<MontyField31<FP>, WIDTH, D> for Poseidon2InternalLayerMonty31<FP, WIDTH, P2P>
where FP: FieldParameters, P2P: InternalLayerParameters<FP, WIDTH>,