pub struct Poseidon2FlattenedGate<F: SmallField, const AW: usize, const SW: usize, const CW: usize, PAR: Poseidon2Parameters<F, AW, SW, CW>> {
pub absorbed_elements: [Variable; AW],
pub kept_elements: [Variable; CW],
pub new_state: [Variable; SW],
/* private fields */
}
Fields§
§absorbed_elements: [Variable; AW]
§kept_elements: [Variable; CW]
§new_state: [Variable; SW]
Implementations§
source§impl<F: SmallField, const AW: usize, const SW: usize, const CW: usize, PAR: Poseidon2Parameters<F, AW, SW, CW>> Poseidon2FlattenedGate<F, AW, SW, CW, PAR>
impl<F: SmallField, const AW: usize, const SW: usize, const CW: usize, PAR: Poseidon2Parameters<F, AW, SW, CW>> Poseidon2FlattenedGate<F, AW, SW, CW, PAR>
pub fn compute_strategy(geometry: &CSGeometry) -> (usize, (usize, usize))
pub fn add_to_cs<CS: ConstraintSystem<F>>( self, cs: &mut CS, temporary_places: Vec<Place>, )
pub fn configure_builder<GC: GateConfigurationHolder<F>, TB: StaticToolboxHolder, TImpl: CsBuilderImpl<F, TImpl>>( builder: CsBuilder<TImpl, F, GC, TB>, placement_strategy: GatePlacementStrategy, ) -> CsBuilder<TImpl, F, (GateTypeEntry<F, Self, NextGateCounterWithoutParams>, GC), TB>
pub fn compute_round_function<CS: ConstraintSystem<F>>( cs: &mut CS, elements_to_absorb: [Variable; AW], state_elements_to_keep: [Variable; CW], ) -> [Variable; SW]
pub fn enforce_round_function<CS: ConstraintSystem<F>>( cs: &mut CS, initial_state: [Variable; SW], final_state: [Variable; SW], )
Trait Implementations§
source§impl<F: SmallField, const AW: usize, const SW: usize, const CW: usize, PAR: Poseidon2Parameters<F, AW, SW, CW>> Clone for Poseidon2FlattenedGate<F, AW, SW, CW, PAR>
impl<F: SmallField, const AW: usize, const SW: usize, const CW: usize, PAR: Poseidon2Parameters<F, AW, SW, CW>> Clone for Poseidon2FlattenedGate<F, AW, SW, CW, PAR>
source§impl<F: SmallField, const AW: usize, const SW: usize, const CW: usize, PAR: Poseidon2Parameters<F, AW, SW, CW>> Debug for Poseidon2FlattenedGate<F, AW, SW, CW, PAR>
impl<F: SmallField, const AW: usize, const SW: usize, const CW: usize, PAR: Poseidon2Parameters<F, AW, SW, CW>> Debug for Poseidon2FlattenedGate<F, AW, SW, CW, PAR>
source§impl<F: SmallField, const AW: usize, const SW: usize, const CW: usize, PAR: Poseidon2Parameters<F, AW, SW, CW>> Gate<F> for Poseidon2FlattenedGate<F, AW, SW, CW, PAR>
impl<F: SmallField, const AW: usize, const SW: usize, const CW: usize, PAR: Poseidon2Parameters<F, AW, SW, CW>> Gate<F> for Poseidon2FlattenedGate<F, AW, SW, CW, PAR>
fn check_compatible_with_cs<CS: ConstraintSystem<F>>(&self, cs: &CS) -> bool
type Evaluator = Poseidon2RoundFunctionFlattenedEvaluator<F, AW, SW, CW, PAR>
fn evaluator(&self) -> Self::Evaluator
type Tools = ()
fn placement_type(&self) -> GatePlacementType
fn num_repetitions_in_geometry(&self, geometry: &CSGeometry) -> usize
fn num_required_constants(&self, geometry: &CSGeometry) -> usize
fn capacity_per_row<CS: ConstraintSystem<F>>(&self, cs: &CS) -> usize
fn row_finalization_function<CS: ConstraintSystem<F>>() -> Option<GateRowCleanupFunction<CS>>
fn columns_finalization_function<CS: ConstraintSystem<F>>() -> Option<GateColumnsCleanupFunction<CS>>
source§impl<F: SmallField, const AW: usize, const SW: usize, const CW: usize, PAR: Poseidon2Parameters<F, AW, SW, CW>> Hash for Poseidon2FlattenedGate<F, AW, SW, CW, PAR>
impl<F: SmallField, const AW: usize, const SW: usize, const CW: usize, PAR: Poseidon2Parameters<F, AW, SW, CW>> Hash for Poseidon2FlattenedGate<F, AW, SW, CW, PAR>
source§impl<F: SmallField, const AW: usize, const SW: usize, const CW: usize, PAR: Poseidon2Parameters<F, AW, SW, CW>> PartialEq for Poseidon2FlattenedGate<F, AW, SW, CW, PAR>
impl<F: SmallField, const AW: usize, const SW: usize, const CW: usize, PAR: Poseidon2Parameters<F, AW, SW, CW>> PartialEq for Poseidon2FlattenedGate<F, AW, SW, CW, PAR>
impl<F: SmallField, const AW: usize, const SW: usize, const CW: usize, PAR: Poseidon2Parameters<F, AW, SW, CW>> Eq for Poseidon2FlattenedGate<F, AW, SW, CW, PAR>
Auto Trait Implementations§
impl<F, const AW: usize, const SW: usize, const CW: usize, PAR> Freeze for Poseidon2FlattenedGate<F, AW, SW, CW, PAR>
impl<F, const AW: usize, const SW: usize, const CW: usize, PAR> RefUnwindSafe for Poseidon2FlattenedGate<F, AW, SW, CW, PAR>where
F: RefUnwindSafe,
PAR: RefUnwindSafe,
impl<F, const AW: usize, const SW: usize, const CW: usize, PAR> Send for Poseidon2FlattenedGate<F, AW, SW, CW, PAR>
impl<F, const AW: usize, const SW: usize, const CW: usize, PAR> Sync for Poseidon2FlattenedGate<F, AW, SW, CW, PAR>
impl<F, const AW: usize, const SW: usize, const CW: usize, PAR> Unpin for Poseidon2FlattenedGate<F, AW, SW, CW, PAR>
impl<F, const AW: usize, const SW: usize, const CW: usize, PAR> UnwindSafe for Poseidon2FlattenedGate<F, AW, SW, CW, PAR>where
F: UnwindSafe,
PAR: 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§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)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