Trait ExternalLayer

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

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

Required Methods§

Source

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

Perform the initial external layers of the Poseidon2 permutation on the given state.

Source

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

Perform the terminal external 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> ExternalLayer<FA, WIDTH, BABY_BEAR_POSEIDON2_SBOX_DEGREE> for Poseidon2ExternalLayer<FA::F, LinearLayers, WIDTH>
where LinearLayers: GenericPoseidon2LinearLayers<FA, WIDTH>,

impl<const WIDTH: usize> ExternalLayer<Bn254Fr, WIDTH, BN254_S_BOX_DEGREE> for ExternalLayerConstants<Bn254Fr, WIDTH>

impl<FA: FieldAlgebra<F = Goldilocks>, const WIDTH: usize> ExternalLayer<FA, WIDTH, GOLDILOCKS_S_BOX_DEGREE> for Poseidon2ExternalLayerGoldilocks<WIDTH>

impl<FA: FieldAlgebra<F = Goldilocks>, const WIDTH: usize> ExternalLayer<FA, WIDTH, GOLDILOCKS_S_BOX_DEGREE> for Poseidon2ExternalLayerGoldilocksHL<WIDTH>

impl<FP, const D: u64, const WIDTH: usize> ExternalLayer<PackedMontyField31Neon<FP>, WIDTH, D> for Poseidon2ExternalLayerMonty31<FP, WIDTH>
where FP: FieldParameters,

impl<FP, const WIDTH: usize, const D: u64> ExternalLayer<MontyField31<FP>, WIDTH, D> for Poseidon2ExternalLayerMonty31<FP, WIDTH>
where FP: FieldParameters,