Trait Permutation

Source
pub trait Permutation<T>: Clone + Sync
where T: Clone,
{ // Provided methods fn permute(&self, input: T) -> T { ... } fn permute_mut(&self, input: &mut T) { ... } }
Expand description

A permutation in the mathematical sense.

Provided Methods§

Source

fn permute(&self, input: T) -> T

Source

fn permute_mut(&self, input: &mut T)

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.

Implementations on Foreign Types§

Source§

impl Permutation<[u8; 200]> for KeccakF

Source§

fn permute(&self, input_u8s: [u8; 200]) -> [u8; 200]

Source§

impl Permutation<[u64; 25]> for KeccakF

Source§

fn permute_mut(&self, input: &mut [u64; 25])

Source§

impl Permutation<[Goldilocks; 8]> for MdsMatrixGoldilocks

Source§

fn permute(&self, input: [Goldilocks; 8]) -> [Goldilocks; 8]

Source§

impl Permutation<[Goldilocks; 12]> for MdsMatrixGoldilocks

Source§

fn permute(&self, input: [Goldilocks; 12]) -> [Goldilocks; 12]

Source§

impl Permutation<[Goldilocks; 16]> for MdsMatrixGoldilocks

Source§

fn permute(&self, input: [Goldilocks; 16]) -> [Goldilocks; 16]

Source§

impl Permutation<[Goldilocks; 24]> for MdsMatrixGoldilocks

Source§

fn permute(&self, input: [Goldilocks; 24]) -> [Goldilocks; 24]

Source§

impl Permutation<[Goldilocks; 32]> for MdsMatrixGoldilocks

Source§

fn permute(&self, input: [Goldilocks; 32]) -> [Goldilocks; 32]

Source§

impl Permutation<[Goldilocks; 64]> for MdsMatrixGoldilocks

Source§

fn permute(&self, input: [Goldilocks; 64]) -> [Goldilocks; 64]

Source§

impl Permutation<[Goldilocks; 68]> for MdsMatrixGoldilocks

Source§

fn permute(&self, input: [Goldilocks; 68]) -> [Goldilocks; 68]

Source§

impl Permutation<[[u64; 2]; 25]> for KeccakF

Source§

fn permute_mut(&self, state: &mut [[u64; 2]; 25])

Source§

impl<F, A, ExternalPerm, InternalPerm, const WIDTH: usize, const D: u64> Permutation<[A; WIDTH]> for Poseidon2<F, ExternalPerm, InternalPerm, WIDTH, D>
where F: PrimeField + InjectiveMonomial<D>, A: Algebra<F> + Sync + InjectiveMonomial<D>, ExternalPerm: ExternalLayer<A, WIDTH, D>, InternalPerm: InternalLayer<A, WIDTH, D>,

Source§

fn permute_mut(&self, state: &mut [A; WIDTH])

Source§

impl<F, A, Mds, const WIDTH: usize, const ALPHA: u64> Permutation<[A; WIDTH]> for Poseidon<F, Mds, WIDTH, ALPHA>
where F: PrimeField + InjectiveMonomial<ALPHA>, A: Algebra<F> + InjectiveMonomial<ALPHA>, Mds: MdsPermutation<A, WIDTH>,

Source§

fn permute_mut(&self, state: &mut [A; WIDTH])

Source§

impl<F, A, const N: usize> Permutation<[A; N]> for CosetMds<F, N>
where F: TwoAdicField, A: Algebra<F>,

Source§

fn permute_mut(&self, values: &mut [A; N])

Source§

impl<F, A, const N: usize> Permutation<[A; N]> for IntegratedCosetMds<F, N>
where F: Field, A: Algebra<F>,

Source§

fn permute_mut(&self, values: &mut [A; N])

Source§

impl<FP, MU> Permutation<[MontyField31<FP>; 8]> for MdsMatrixMontyField31<MU>
where FP: MontyParameters, MU: MDSUtils,

Source§

fn permute(&self, input: [MontyField31<FP>; 8]) -> [MontyField31<FP>; 8]

Source§

impl<FP, MU> Permutation<[MontyField31<FP>; 12]> for MdsMatrixMontyField31<MU>
where FP: MontyParameters, MU: MDSUtils,

Source§

fn permute(&self, input: [MontyField31<FP>; 12]) -> [MontyField31<FP>; 12]

Source§

impl<FP, MU> Permutation<[MontyField31<FP>; 16]> for MdsMatrixMontyField31<MU>
where FP: MontyParameters, MU: MDSUtils,

Source§

fn permute(&self, input: [MontyField31<FP>; 16]) -> [MontyField31<FP>; 16]

Source§

impl<FP, MU> Permutation<[MontyField31<FP>; 24]> for MdsMatrixMontyField31<MU>
where MU: MDSUtils, FP: BarrettParameters,

Source§

fn permute(&self, input: [MontyField31<FP>; 24]) -> [MontyField31<FP>; 24]

Source§

impl<FP, MU> Permutation<[MontyField31<FP>; 32]> for MdsMatrixMontyField31<MU>
where FP: BarrettParameters, MU: MDSUtils,

Source§

fn permute(&self, input: [MontyField31<FP>; 32]) -> [MontyField31<FP>; 32]

Source§

impl<FP, MU> Permutation<[MontyField31<FP>; 64]> for MdsMatrixMontyField31<MU>
where FP: BarrettParameters, MU: MDSUtils,

Source§

fn permute(&self, input: [MontyField31<FP>; 64]) -> [MontyField31<FP>; 64]

Source§

impl<R> Permutation<[R; 4]> for HLMDSMat4

Source§

fn permute_mut(&self, input: &mut [R; 4])

Source§

impl<R> Permutation<[R; 4]> for MDSMat4

Source§

fn permute_mut(&self, input: &mut [R; 4])

Source§

impl<T, P> Permutation<T> for Instrumented<P>
where T: Clone, P: Permutation<T>,

Source§

fn permute_mut(&self, input: &mut T)

Source§

fn permute(&self, input: T) -> T

Implementors§