Struct binius_core::poly_commit::fri_pcs::FRIPCS
source · pub struct FRIPCS<F, FDomain, FEncode, PE, DomainFactory, VCS>where
F: Field,
FDomain: Field,
FEncode: BinaryField,
PE: PackedField + PackedExtension<FEncode>,
PE::Scalar: BinaryField + ExtensionField<F> + PackedField<Scalar = PE::Scalar> + ExtensionField<FDomain> + ExtensionField<FEncode>,{ /* private fields */ }
Expand description
The small-field FRI-based PCS from DP24, also known as the FRI-Binius PCS.
This implements the Construction 6.1 in DP24. The polynomial is committed by committing the Reed–Solomon encoding of its packed values with a vector commitment scheme (i.e. Merkle tree). Evaluation proofs consist of interleaved sumcheck and FRI protocol invocations.
§Type parameters
F
- the coefficient subfieldFDomain
- the field containing the sumcheck evaluation domainsFEncode
- a small field that is the Reed–Solomon alphabetPE
- a packed extension field ofF
that is cryptographically bigDomainFactory
- a domain factory for the sumcheck reductionVCS
- the vector commitment scheme used to commit the IOP oracles
Implementations§
source§impl<F, FDomain, FEncode, FExt, PE, DomainFactory, VCS> FRIPCS<F, FDomain, FEncode, PE, DomainFactory, VCS>where
F: Field,
FDomain: Field,
FEncode: BinaryField,
FExt: BinaryField + PackedField<Scalar = FExt> + ExtensionField<F> + ExtensionField<FDomain> + ExtensionField<FEncode>,
PE: PackedFieldIndexable<Scalar = FExt> + PackedExtension<FEncode, PackedSubfield: PackedFieldIndexable>,
VCS: VectorCommitScheme<FExt> + Sync,
VCS::Committed: Send + Sync,
impl<F, FDomain, FEncode, FExt, PE, DomainFactory, VCS> FRIPCS<F, FDomain, FEncode, PE, DomainFactory, VCS>where
F: Field,
FDomain: Field,
FEncode: BinaryField,
FExt: BinaryField + PackedField<Scalar = FExt> + ExtensionField<F> + ExtensionField<FDomain> + ExtensionField<FEncode>,
PE: PackedFieldIndexable<Scalar = FExt> + PackedExtension<FEncode, PackedSubfield: PackedFieldIndexable>,
VCS: VectorCommitScheme<FExt> + Sync,
VCS::Committed: Send + Sync,
Trait Implementations§
source§impl<F, FDomain, FEncode, PE, DomainFactory: Debug, VCS: Debug> Debug for FRIPCS<F, FDomain, FEncode, PE, DomainFactory, VCS>where
F: Field + Debug,
FDomain: Field + Debug,
FEncode: BinaryField + Debug,
PE: PackedField + PackedExtension<FEncode> + Debug,
PE::Scalar: BinaryField + ExtensionField<F> + PackedField<Scalar = PE::Scalar> + ExtensionField<FDomain> + ExtensionField<FEncode> + Debug,
impl<F, FDomain, FEncode, PE, DomainFactory: Debug, VCS: Debug> Debug for FRIPCS<F, FDomain, FEncode, PE, DomainFactory, VCS>where
F: Field + Debug,
FDomain: Field + Debug,
FEncode: BinaryField + Debug,
PE: PackedField + PackedExtension<FEncode> + Debug,
PE::Scalar: BinaryField + ExtensionField<F> + PackedField<Scalar = PE::Scalar> + ExtensionField<FDomain> + ExtensionField<FEncode> + Debug,
source§impl<F, FDomain, FEncode, FExt, P, PE, DomainFactory, VCS> PolyCommitScheme<P, FExt> for FRIPCS<F, FDomain, FEncode, PE, DomainFactory, VCS>where
F: Field,
FDomain: Field,
FEncode: BinaryField,
FExt: BinaryField + PackedField<Scalar = FExt> + ExtensionField<F> + ExtensionField<FDomain> + ExtensionField<FEncode> + PackedExtension<F> + PackedExtension<FEncode>,
P: PackedField<Scalar = F>,
PE: PackedFieldIndexable<Scalar = FExt> + PackedExtension<F, PackedSubfield = P> + PackedExtension<FDomain> + PackedExtension<FEncode, PackedSubfield: PackedFieldIndexable>,
DomainFactory: EvaluationDomainFactory<FDomain>,
VCS: VectorCommitScheme<FExt> + Sync,
VCS::Committed: Send + Sync,
impl<F, FDomain, FEncode, FExt, P, PE, DomainFactory, VCS> PolyCommitScheme<P, FExt> for FRIPCS<F, FDomain, FEncode, PE, DomainFactory, VCS>where
F: Field,
FDomain: Field,
FEncode: BinaryField,
FExt: BinaryField + PackedField<Scalar = FExt> + ExtensionField<F> + ExtensionField<FDomain> + ExtensionField<FEncode> + PackedExtension<F> + PackedExtension<FEncode>,
P: PackedField<Scalar = F>,
PE: PackedFieldIndexable<Scalar = FExt> + PackedExtension<F, PackedSubfield = P> + PackedExtension<FDomain> + PackedExtension<FEncode, PackedSubfield: PackedFieldIndexable>,
DomainFactory: EvaluationDomainFactory<FDomain>,
VCS: VectorCommitScheme<FExt> + Sync,
VCS::Committed: Send + Sync,
type Commitment = <VCS as VectorCommitScheme<FExt>>::Commitment
type Committed = (Vec<PE>, <VCS as VectorCommitScheme<FExt>>::Committed)
type Proof = Proof<F, FExt, VCS>
type Error = Error
fn n_vars(&self) -> usize
source§fn commit<Data>(
&self,
polys: &[MultilinearExtension<P, Data>]
) -> Result<(Self::Commitment, Self::Committed), Self::Error>
fn commit<Data>( &self, polys: &[MultilinearExtension<P, Data>] ) -> Result<(Self::Commitment, Self::Committed), Self::Error>
Commit to a batch of polynomials
source§fn prove_evaluation<Data, Challenger, Backend>(
&self,
challenger: &mut Challenger,
committed: &Self::Committed,
polys: &[MultilinearExtension<P, Data>],
query: &[PE::Scalar],
backend: Backend
) -> Result<Self::Proof, Self::Error>where
Data: Deref<Target = [P]> + Send + Sync,
Challenger: CanObserve<PE::Scalar> + CanObserve<Self::Commitment> + CanSample<PE::Scalar> + CanSampleBits<usize>,
Backend: ComputationBackend,
fn prove_evaluation<Data, Challenger, Backend>(
&self,
challenger: &mut Challenger,
committed: &Self::Committed,
polys: &[MultilinearExtension<P, Data>],
query: &[PE::Scalar],
backend: Backend
) -> Result<Self::Proof, Self::Error>where
Data: Deref<Target = [P]> + Send + Sync,
Challenger: CanObserve<PE::Scalar> + CanObserve<Self::Commitment> + CanSample<PE::Scalar> + CanSampleBits<usize>,
Backend: ComputationBackend,
Generate an evaluation proof at a random challenge point.
source§fn verify_evaluation<Challenger, Backend>(
&self,
challenger: &mut Challenger,
commitment: &Self::Commitment,
query: &[FExt],
proof: Self::Proof,
values: &[FExt],
backend: Backend
) -> Result<(), Self::Error>where
Challenger: CanObserve<FExt> + CanObserve<Self::Commitment> + CanSample<FExt> + CanSampleBits<usize>,
Backend: ComputationBackend,
fn verify_evaluation<Challenger, Backend>(
&self,
challenger: &mut Challenger,
commitment: &Self::Commitment,
query: &[FExt],
proof: Self::Proof,
values: &[FExt],
backend: Backend
) -> Result<(), Self::Error>where
Challenger: CanObserve<FExt> + CanObserve<Self::Commitment> + CanSample<FExt> + CanSampleBits<usize>,
Backend: ComputationBackend,
Verify an evaluation proof at a random challenge point.
source§fn proof_size(&self, n_polys: usize) -> usize
fn proof_size(&self, n_polys: usize) -> usize
Return the byte-size of a proof.
Auto Trait Implementations§
impl<F, FDomain, FEncode, PE, DomainFactory, VCS> Freeze for FRIPCS<F, FDomain, FEncode, PE, DomainFactory, VCS>where
<PE as PackedField>::Scalar: MulAssign<FEncode> + SubAssign<FEncode> + AddAssign<FEncode> + Mul<FEncode, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar> + Sub<FEncode, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar> + Add<FEncode, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar> + TryInto<FEncode> + Sized + From<FEncode> + Field<Output = <PE as PackedField>::Scalar> + WithUnderlier + Zeroable + InvertOrZero + Square + for<'a> MulAssign<&'a <PE as PackedField>::Scalar> + for<'a> SubAssign<&'a <PE as PackedField>::Scalar> + for<'a> AddAssign<&'a <PE as PackedField>::Scalar> + MulAssign + SubAssign + AddAssign + for<'a> Product<&'a <PE as PackedField>::Scalar> + for<'a> Sum<&'a <PE as PackedField>::Scalar> + for<'a> Mul<&'a <PE as PackedField>::Scalar> + for<'a> Sub<&'a <PE as PackedField>::Scalar> + for<'a> Add<&'a <PE as PackedField>::Scalar> + Product + Sum + Mul + Sub + Add + Neg + Debug + Sync + Send + Default + Clone + Copy + Eq + PartialEq + MulAssign<FDomain> + SubAssign<FDomain> + AddAssign<FDomain> + Mul<FDomain> + Sub<FDomain> + Add<FDomain> + TryInto<FDomain> + From<FDomain> + MulAssign<F> + SubAssign<F> + AddAssign<F> + Mul<F> + Sub<F> + Add<F> + TryInto<F> + From<F> + ExtensionField<BinaryField1b> + MulAssign<BinaryField1b> + SubAssign<BinaryField1b> + AddAssign<BinaryField1b> + Mul<BinaryField1b> + Sub<BinaryField1b> + Add<BinaryField1b> + TryInto<BinaryField1b> + From<BinaryField1b> + 'static,
<<PE as PackedField>::Scalar as WithUnderlier>::Underlier: PackScalar<<PE as PackedField>::Scalar> + UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + Sized + 'static,
PE: Zeroable + Sync + Send + Product + Sum + MulAssign<<PE as PackedField>::Scalar> + SubAssign<<PE as PackedField>::Scalar> + AddAssign<<PE as PackedField>::Scalar> + Mul<<PE as PackedField>::Scalar, Output = PE, Output = PE> + Sub<<PE as PackedField>::Scalar, Output = PE, Output = PE> + Add<<PE as PackedField>::Scalar, Output = PE, Output = PE> + MulAssign + SubAssign + AddAssign + Mul + Sub + Add + Eq + PartialEq + Copy + Clone + Debug + Default + 'static,
FEncode: ExtensionField<BinaryField1b, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode> + MulAssign<BinaryField1b> + SubAssign<BinaryField1b> + AddAssign<BinaryField1b> + Mul<BinaryField1b> + Sub<BinaryField1b> + Add<BinaryField1b> + TryInto<BinaryField1b> + From<BinaryField1b> + Field + WithUnderlier + Zeroable + InvertOrZero + Square + for<'a> MulAssign<&'a FEncode> + for<'a> SubAssign<&'a FEncode> + for<'a> AddAssign<&'a FEncode> + MulAssign + SubAssign + AddAssign + for<'a> Product<&'a FEncode> + for<'a> Sum<&'a FEncode> + for<'a> Mul<&'a FEncode> + for<'a> Sub<&'a FEncode> + for<'a> Add<&'a FEncode> + Product + Sum + Mul + Sub + Add + Neg + Debug + Sync + Send + Default + Clone + Copy + Eq + PartialEq + 'static,
<FEncode as WithUnderlier>::Underlier: PackScalar<FEncode> + UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + Sized + 'static,
<FDomain as WithUnderlier>::Underlier: PackScalar<FDomain> + UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + Sized + 'static,
FDomain: WithUnderlier + Zeroable + InvertOrZero + Square + for<'a> MulAssign<&'a FDomain> + for<'a> SubAssign<&'a FDomain> + for<'a> AddAssign<&'a FDomain> + MulAssign + SubAssign + AddAssign + for<'a> Product<&'a FDomain> + for<'a> Sum<&'a FDomain> + for<'a> Mul<&'a FDomain, Output = FDomain, Output = FDomain> + for<'a> Sub<&'a FDomain, Output = FDomain, Output = FDomain> + for<'a> Add<&'a FDomain, Output = FDomain, Output = FDomain> + Product + Sum + Mul + Sub + Add + Neg<Output = FDomain> + Debug + Sync + Send + Default + Clone + Copy + Eq + PartialEq + 'static,
<F as WithUnderlier>::Underlier: PackScalar<F> + UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + Sized + 'static,
F: WithUnderlier + Zeroable + InvertOrZero + Square + for<'a> MulAssign<&'a F> + for<'a> SubAssign<&'a F> + for<'a> AddAssign<&'a F> + MulAssign + SubAssign + AddAssign + for<'a> Product<&'a F> + for<'a> Sum<&'a F> + for<'a> Mul<&'a F, Output = F, Output = F> + for<'a> Sub<&'a F, Output = F, Output = F> + for<'a> Add<&'a F, Output = F, Output = F> + Product + Sum + Mul + Sub + Add + Neg<Output = F> + Debug + Sync + Send + Default + Clone + Copy + Eq + PartialEq + 'static,
VCS: Freeze,
DomainFactory: Freeze,
impl<F, FDomain, FEncode, PE, DomainFactory, VCS> RefUnwindSafe for FRIPCS<F, FDomain, FEncode, PE, DomainFactory, VCS>where
<PE as PackedField>::Scalar: MulAssign<FEncode> + SubAssign<FEncode> + AddAssign<FEncode> + Mul<FEncode, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar> + Sub<FEncode, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar> + Add<FEncode, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar> + TryInto<FEncode> + Sized + From<FEncode> + Field<Output = <PE as PackedField>::Scalar> + WithUnderlier + Zeroable + InvertOrZero + Square + for<'a> MulAssign<&'a <PE as PackedField>::Scalar> + for<'a> SubAssign<&'a <PE as PackedField>::Scalar> + for<'a> AddAssign<&'a <PE as PackedField>::Scalar> + MulAssign + SubAssign + AddAssign + for<'a> Product<&'a <PE as PackedField>::Scalar> + for<'a> Sum<&'a <PE as PackedField>::Scalar> + for<'a> Mul<&'a <PE as PackedField>::Scalar> + for<'a> Sub<&'a <PE as PackedField>::Scalar> + for<'a> Add<&'a <PE as PackedField>::Scalar> + Product + Sum + Mul + Sub + Add + Neg + Debug + Sync + Send + Default + Clone + Copy + Eq + PartialEq + MulAssign<FDomain> + SubAssign<FDomain> + AddAssign<FDomain> + Mul<FDomain> + Sub<FDomain> + Add<FDomain> + TryInto<FDomain> + From<FDomain> + MulAssign<F> + SubAssign<F> + AddAssign<F> + Mul<F> + Sub<F> + Add<F> + TryInto<F> + From<F> + ExtensionField<BinaryField1b> + MulAssign<BinaryField1b> + SubAssign<BinaryField1b> + AddAssign<BinaryField1b> + Mul<BinaryField1b> + Sub<BinaryField1b> + Add<BinaryField1b> + TryInto<BinaryField1b> + From<BinaryField1b> + 'static + RefUnwindSafe,
<<PE as PackedField>::Scalar as WithUnderlier>::Underlier: PackScalar<<PE as PackedField>::Scalar> + UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + Sized + 'static,
PE: Zeroable + Sync + Send + Product + Sum + MulAssign<<PE as PackedField>::Scalar> + SubAssign<<PE as PackedField>::Scalar> + AddAssign<<PE as PackedField>::Scalar> + Mul<<PE as PackedField>::Scalar, Output = PE, Output = PE> + Sub<<PE as PackedField>::Scalar, Output = PE, Output = PE> + Add<<PE as PackedField>::Scalar, Output = PE, Output = PE> + MulAssign + SubAssign + AddAssign + Mul + Sub + Add + Eq + PartialEq + Copy + Clone + Debug + Default + 'static + RefUnwindSafe,
FEncode: ExtensionField<BinaryField1b, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode> + MulAssign<BinaryField1b> + SubAssign<BinaryField1b> + AddAssign<BinaryField1b> + Mul<BinaryField1b> + Sub<BinaryField1b> + Add<BinaryField1b> + TryInto<BinaryField1b> + From<BinaryField1b> + Field + WithUnderlier + Zeroable + InvertOrZero + Square + for<'a> MulAssign<&'a FEncode> + for<'a> SubAssign<&'a FEncode> + for<'a> AddAssign<&'a FEncode> + MulAssign + SubAssign + AddAssign + for<'a> Product<&'a FEncode> + for<'a> Sum<&'a FEncode> + for<'a> Mul<&'a FEncode> + for<'a> Sub<&'a FEncode> + for<'a> Add<&'a FEncode> + Product + Sum + Mul + Sub + Add + Neg + Debug + Sync + Send + Default + Clone + Copy + Eq + PartialEq + 'static + RefUnwindSafe,
<FEncode as WithUnderlier>::Underlier: PackScalar<FEncode> + UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + Sized + 'static,
<FDomain as WithUnderlier>::Underlier: PackScalar<FDomain> + UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + Sized + 'static,
FDomain: WithUnderlier + Zeroable + InvertOrZero + Square + for<'a> MulAssign<&'a FDomain> + for<'a> SubAssign<&'a FDomain> + for<'a> AddAssign<&'a FDomain> + MulAssign + SubAssign + AddAssign + for<'a> Product<&'a FDomain> + for<'a> Sum<&'a FDomain> + for<'a> Mul<&'a FDomain, Output = FDomain, Output = FDomain> + for<'a> Sub<&'a FDomain, Output = FDomain, Output = FDomain> + for<'a> Add<&'a FDomain, Output = FDomain, Output = FDomain> + Product + Sum + Mul + Sub + Add + Neg<Output = FDomain> + Debug + Sync + Send + Default + Clone + Copy + Eq + PartialEq + 'static + RefUnwindSafe,
<F as WithUnderlier>::Underlier: PackScalar<F> + UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + Sized + 'static,
F: WithUnderlier + Zeroable + InvertOrZero + Square + for<'a> MulAssign<&'a F> + for<'a> SubAssign<&'a F> + for<'a> AddAssign<&'a F> + MulAssign + SubAssign + AddAssign + for<'a> Product<&'a F> + for<'a> Sum<&'a F> + for<'a> Mul<&'a F, Output = F, Output = F> + for<'a> Sub<&'a F, Output = F, Output = F> + for<'a> Add<&'a F, Output = F, Output = F> + Product + Sum + Mul + Sub + Add + Neg<Output = F> + Debug + Sync + Send + Default + Clone + Copy + Eq + PartialEq + 'static + RefUnwindSafe,
VCS: RefUnwindSafe,
DomainFactory: RefUnwindSafe,
<PE as PackedExtension<FEncode>>::PackedSubfield: RefUnwindSafe,
impl<F, FDomain, FEncode, PE, DomainFactory, VCS> Send for FRIPCS<F, FDomain, FEncode, PE, DomainFactory, VCS>where
<PE as PackedField>::Scalar: MulAssign<FEncode> + SubAssign<FEncode> + AddAssign<FEncode> + Mul<FEncode, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar> + Sub<FEncode, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar> + Add<FEncode, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar> + TryInto<FEncode> + Sized + From<FEncode> + Field<Output = <PE as PackedField>::Scalar> + WithUnderlier + Zeroable + InvertOrZero + Square + for<'a> MulAssign<&'a <PE as PackedField>::Scalar> + for<'a> SubAssign<&'a <PE as PackedField>::Scalar> + for<'a> AddAssign<&'a <PE as PackedField>::Scalar> + MulAssign + SubAssign + AddAssign + for<'a> Product<&'a <PE as PackedField>::Scalar> + for<'a> Sum<&'a <PE as PackedField>::Scalar> + for<'a> Mul<&'a <PE as PackedField>::Scalar> + for<'a> Sub<&'a <PE as PackedField>::Scalar> + for<'a> Add<&'a <PE as PackedField>::Scalar> + Product + Sum + Mul + Sub + Add + Neg + Debug + Sync + Send + Default + Clone + Copy + Eq + PartialEq + MulAssign<FDomain> + SubAssign<FDomain> + AddAssign<FDomain> + Mul<FDomain> + Sub<FDomain> + Add<FDomain> + TryInto<FDomain> + From<FDomain> + MulAssign<F> + SubAssign<F> + AddAssign<F> + Mul<F> + Sub<F> + Add<F> + TryInto<F> + From<F> + ExtensionField<BinaryField1b> + MulAssign<BinaryField1b> + SubAssign<BinaryField1b> + AddAssign<BinaryField1b> + Mul<BinaryField1b> + Sub<BinaryField1b> + Add<BinaryField1b> + TryInto<BinaryField1b> + From<BinaryField1b> + 'static,
<<PE as PackedField>::Scalar as WithUnderlier>::Underlier: PackScalar<<PE as PackedField>::Scalar> + UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + Sized + 'static,
PE: Zeroable + Sync + Send + Product + Sum + MulAssign<<PE as PackedField>::Scalar> + SubAssign<<PE as PackedField>::Scalar> + AddAssign<<PE as PackedField>::Scalar> + Mul<<PE as PackedField>::Scalar, Output = PE, Output = PE> + Sub<<PE as PackedField>::Scalar, Output = PE, Output = PE> + Add<<PE as PackedField>::Scalar, Output = PE, Output = PE> + MulAssign + SubAssign + AddAssign + Mul + Sub + Add + Eq + PartialEq + Copy + Clone + Debug + Default + 'static,
FEncode: ExtensionField<BinaryField1b, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode> + MulAssign<BinaryField1b> + SubAssign<BinaryField1b> + AddAssign<BinaryField1b> + Mul<BinaryField1b> + Sub<BinaryField1b> + Add<BinaryField1b> + TryInto<BinaryField1b> + From<BinaryField1b> + Field + WithUnderlier + Zeroable + InvertOrZero + Square + for<'a> MulAssign<&'a FEncode> + for<'a> SubAssign<&'a FEncode> + for<'a> AddAssign<&'a FEncode> + MulAssign + SubAssign + AddAssign + for<'a> Product<&'a FEncode> + for<'a> Sum<&'a FEncode> + for<'a> Mul<&'a FEncode> + for<'a> Sub<&'a FEncode> + for<'a> Add<&'a FEncode> + Product + Sum + Mul + Sub + Add + Neg + Debug + Sync + Send + Default + Clone + Copy + Eq + PartialEq + 'static,
<FEncode as WithUnderlier>::Underlier: PackScalar<FEncode> + UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + Sized + 'static,
<FDomain as WithUnderlier>::Underlier: PackScalar<FDomain> + UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + Sized + 'static,
FDomain: WithUnderlier + Zeroable + InvertOrZero + Square + for<'a> MulAssign<&'a FDomain> + for<'a> SubAssign<&'a FDomain> + for<'a> AddAssign<&'a FDomain> + MulAssign + SubAssign + AddAssign + for<'a> Product<&'a FDomain> + for<'a> Sum<&'a FDomain> + for<'a> Mul<&'a FDomain, Output = FDomain, Output = FDomain> + for<'a> Sub<&'a FDomain, Output = FDomain, Output = FDomain> + for<'a> Add<&'a FDomain, Output = FDomain, Output = FDomain> + Product + Sum + Mul + Sub + Add + Neg<Output = FDomain> + Debug + Sync + Send + Default + Clone + Copy + Eq + PartialEq + 'static,
<F as WithUnderlier>::Underlier: PackScalar<F> + UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + Sized + 'static,
F: WithUnderlier + Zeroable + InvertOrZero + Square + for<'a> MulAssign<&'a F> + for<'a> SubAssign<&'a F> + for<'a> AddAssign<&'a F> + MulAssign + SubAssign + AddAssign + for<'a> Product<&'a F> + for<'a> Sum<&'a F> + for<'a> Mul<&'a F, Output = F, Output = F> + for<'a> Sub<&'a F, Output = F, Output = F> + for<'a> Add<&'a F, Output = F, Output = F> + Product + Sum + Mul + Sub + Add + Neg<Output = F> + Debug + Sync + Send + Default + Clone + Copy + Eq + PartialEq + 'static,
VCS: Send,
DomainFactory: Send,
impl<F, FDomain, FEncode, PE, DomainFactory, VCS> Sync for FRIPCS<F, FDomain, FEncode, PE, DomainFactory, VCS>where
<PE as PackedField>::Scalar: MulAssign<FEncode> + SubAssign<FEncode> + AddAssign<FEncode> + Mul<FEncode, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar> + Sub<FEncode, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar> + Add<FEncode, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar> + TryInto<FEncode> + Sized + From<FEncode> + Field<Output = <PE as PackedField>::Scalar> + WithUnderlier + Zeroable + InvertOrZero + Square + for<'a> MulAssign<&'a <PE as PackedField>::Scalar> + for<'a> SubAssign<&'a <PE as PackedField>::Scalar> + for<'a> AddAssign<&'a <PE as PackedField>::Scalar> + MulAssign + SubAssign + AddAssign + for<'a> Product<&'a <PE as PackedField>::Scalar> + for<'a> Sum<&'a <PE as PackedField>::Scalar> + for<'a> Mul<&'a <PE as PackedField>::Scalar> + for<'a> Sub<&'a <PE as PackedField>::Scalar> + for<'a> Add<&'a <PE as PackedField>::Scalar> + Product + Sum + Mul + Sub + Add + Neg + Debug + Sync + Send + Default + Clone + Copy + Eq + PartialEq + MulAssign<FDomain> + SubAssign<FDomain> + AddAssign<FDomain> + Mul<FDomain> + Sub<FDomain> + Add<FDomain> + TryInto<FDomain> + From<FDomain> + MulAssign<F> + SubAssign<F> + AddAssign<F> + Mul<F> + Sub<F> + Add<F> + TryInto<F> + From<F> + ExtensionField<BinaryField1b> + MulAssign<BinaryField1b> + SubAssign<BinaryField1b> + AddAssign<BinaryField1b> + Mul<BinaryField1b> + Sub<BinaryField1b> + Add<BinaryField1b> + TryInto<BinaryField1b> + From<BinaryField1b> + 'static,
<<PE as PackedField>::Scalar as WithUnderlier>::Underlier: PackScalar<<PE as PackedField>::Scalar> + UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + Sized + 'static,
PE: Zeroable + Sync + Send + Product + Sum + MulAssign<<PE as PackedField>::Scalar> + SubAssign<<PE as PackedField>::Scalar> + AddAssign<<PE as PackedField>::Scalar> + Mul<<PE as PackedField>::Scalar, Output = PE, Output = PE> + Sub<<PE as PackedField>::Scalar, Output = PE, Output = PE> + Add<<PE as PackedField>::Scalar, Output = PE, Output = PE> + MulAssign + SubAssign + AddAssign + Mul + Sub + Add + Eq + PartialEq + Copy + Clone + Debug + Default + 'static,
FEncode: ExtensionField<BinaryField1b, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode> + MulAssign<BinaryField1b> + SubAssign<BinaryField1b> + AddAssign<BinaryField1b> + Mul<BinaryField1b> + Sub<BinaryField1b> + Add<BinaryField1b> + TryInto<BinaryField1b> + From<BinaryField1b> + Field + WithUnderlier + Zeroable + InvertOrZero + Square + for<'a> MulAssign<&'a FEncode> + for<'a> SubAssign<&'a FEncode> + for<'a> AddAssign<&'a FEncode> + MulAssign + SubAssign + AddAssign + for<'a> Product<&'a FEncode> + for<'a> Sum<&'a FEncode> + for<'a> Mul<&'a FEncode> + for<'a> Sub<&'a FEncode> + for<'a> Add<&'a FEncode> + Product + Sum + Mul + Sub + Add + Neg + Debug + Sync + Send + Default + Clone + Copy + Eq + PartialEq + 'static,
<FEncode as WithUnderlier>::Underlier: PackScalar<FEncode> + UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + Sized + 'static,
<FDomain as WithUnderlier>::Underlier: PackScalar<FDomain> + UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + Sized + 'static,
FDomain: WithUnderlier + Zeroable + InvertOrZero + Square + for<'a> MulAssign<&'a FDomain> + for<'a> SubAssign<&'a FDomain> + for<'a> AddAssign<&'a FDomain> + MulAssign + SubAssign + AddAssign + for<'a> Product<&'a FDomain> + for<'a> Sum<&'a FDomain> + for<'a> Mul<&'a FDomain, Output = FDomain, Output = FDomain> + for<'a> Sub<&'a FDomain, Output = FDomain, Output = FDomain> + for<'a> Add<&'a FDomain, Output = FDomain, Output = FDomain> + Product + Sum + Mul + Sub + Add + Neg<Output = FDomain> + Debug + Sync + Send + Default + Clone + Copy + Eq + PartialEq + 'static,
<F as WithUnderlier>::Underlier: PackScalar<F> + UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + Sized + 'static,
F: WithUnderlier + Zeroable + InvertOrZero + Square + for<'a> MulAssign<&'a F> + for<'a> SubAssign<&'a F> + for<'a> AddAssign<&'a F> + MulAssign + SubAssign + AddAssign + for<'a> Product<&'a F> + for<'a> Sum<&'a F> + for<'a> Mul<&'a F, Output = F, Output = F> + for<'a> Sub<&'a F, Output = F, Output = F> + for<'a> Add<&'a F, Output = F, Output = F> + Product + Sum + Mul + Sub + Add + Neg<Output = F> + Debug + Sync + Send + Default + Clone + Copy + Eq + PartialEq + 'static,
VCS: Sync,
DomainFactory: Sync,
impl<F, FDomain, FEncode, PE, DomainFactory, VCS> Unpin for FRIPCS<F, FDomain, FEncode, PE, DomainFactory, VCS>where
<PE as PackedField>::Scalar: MulAssign<FEncode> + SubAssign<FEncode> + AddAssign<FEncode> + Mul<FEncode, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar> + Sub<FEncode, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar> + Add<FEncode, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar> + TryInto<FEncode> + Sized + From<FEncode> + Field<Output = <PE as PackedField>::Scalar> + WithUnderlier + Zeroable + InvertOrZero + Square + for<'a> MulAssign<&'a <PE as PackedField>::Scalar> + for<'a> SubAssign<&'a <PE as PackedField>::Scalar> + for<'a> AddAssign<&'a <PE as PackedField>::Scalar> + MulAssign + SubAssign + AddAssign + for<'a> Product<&'a <PE as PackedField>::Scalar> + for<'a> Sum<&'a <PE as PackedField>::Scalar> + for<'a> Mul<&'a <PE as PackedField>::Scalar> + for<'a> Sub<&'a <PE as PackedField>::Scalar> + for<'a> Add<&'a <PE as PackedField>::Scalar> + Product + Sum + Mul + Sub + Add + Neg + Debug + Sync + Send + Default + Clone + Copy + Eq + PartialEq + MulAssign<FDomain> + SubAssign<FDomain> + AddAssign<FDomain> + Mul<FDomain> + Sub<FDomain> + Add<FDomain> + TryInto<FDomain> + From<FDomain> + MulAssign<F> + SubAssign<F> + AddAssign<F> + Mul<F> + Sub<F> + Add<F> + TryInto<F> + From<F> + ExtensionField<BinaryField1b> + MulAssign<BinaryField1b> + SubAssign<BinaryField1b> + AddAssign<BinaryField1b> + Mul<BinaryField1b> + Sub<BinaryField1b> + Add<BinaryField1b> + TryInto<BinaryField1b> + From<BinaryField1b> + 'static + Unpin,
<<PE as PackedField>::Scalar as WithUnderlier>::Underlier: PackScalar<<PE as PackedField>::Scalar> + UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + Sized + 'static,
PE: Zeroable + Sync + Send + Product + Sum + MulAssign<<PE as PackedField>::Scalar> + SubAssign<<PE as PackedField>::Scalar> + AddAssign<<PE as PackedField>::Scalar> + Mul<<PE as PackedField>::Scalar, Output = PE, Output = PE> + Sub<<PE as PackedField>::Scalar, Output = PE, Output = PE> + Add<<PE as PackedField>::Scalar, Output = PE, Output = PE> + MulAssign + SubAssign + AddAssign + Mul + Sub + Add + Eq + PartialEq + Copy + Clone + Debug + Default + 'static + Unpin,
FEncode: ExtensionField<BinaryField1b, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode> + MulAssign<BinaryField1b> + SubAssign<BinaryField1b> + AddAssign<BinaryField1b> + Mul<BinaryField1b> + Sub<BinaryField1b> + Add<BinaryField1b> + TryInto<BinaryField1b> + From<BinaryField1b> + Field + WithUnderlier + Zeroable + InvertOrZero + Square + for<'a> MulAssign<&'a FEncode> + for<'a> SubAssign<&'a FEncode> + for<'a> AddAssign<&'a FEncode> + MulAssign + SubAssign + AddAssign + for<'a> Product<&'a FEncode> + for<'a> Sum<&'a FEncode> + for<'a> Mul<&'a FEncode> + for<'a> Sub<&'a FEncode> + for<'a> Add<&'a FEncode> + Product + Sum + Mul + Sub + Add + Neg + Debug + Sync + Send + Default + Clone + Copy + Eq + PartialEq + 'static + Unpin,
<FEncode as WithUnderlier>::Underlier: PackScalar<FEncode> + UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + Sized + 'static,
<FDomain as WithUnderlier>::Underlier: PackScalar<FDomain> + UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + Sized + 'static,
FDomain: WithUnderlier + Zeroable + InvertOrZero + Square + for<'a> MulAssign<&'a FDomain> + for<'a> SubAssign<&'a FDomain> + for<'a> AddAssign<&'a FDomain> + MulAssign + SubAssign + AddAssign + for<'a> Product<&'a FDomain> + for<'a> Sum<&'a FDomain> + for<'a> Mul<&'a FDomain, Output = FDomain, Output = FDomain> + for<'a> Sub<&'a FDomain, Output = FDomain, Output = FDomain> + for<'a> Add<&'a FDomain, Output = FDomain, Output = FDomain> + Product + Sum + Mul + Sub + Add + Neg<Output = FDomain> + Debug + Sync + Send + Default + Clone + Copy + Eq + PartialEq + 'static + Unpin,
<F as WithUnderlier>::Underlier: PackScalar<F> + UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + Sized + 'static,
F: WithUnderlier + Zeroable + InvertOrZero + Square + for<'a> MulAssign<&'a F> + for<'a> SubAssign<&'a F> + for<'a> AddAssign<&'a F> + MulAssign + SubAssign + AddAssign + for<'a> Product<&'a F> + for<'a> Sum<&'a F> + for<'a> Mul<&'a F, Output = F, Output = F> + for<'a> Sub<&'a F, Output = F, Output = F> + for<'a> Add<&'a F, Output = F, Output = F> + Product + Sum + Mul + Sub + Add + Neg<Output = F> + Debug + Sync + Send + Default + Clone + Copy + Eq + PartialEq + 'static + Unpin,
VCS: Unpin,
DomainFactory: Unpin,
<PE as PackedExtension<FEncode>>::PackedSubfield: Unpin,
impl<F, FDomain, FEncode, PE, DomainFactory, VCS> UnwindSafe for FRIPCS<F, FDomain, FEncode, PE, DomainFactory, VCS>where
<PE as PackedField>::Scalar: MulAssign<FEncode> + SubAssign<FEncode> + AddAssign<FEncode> + Mul<FEncode, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar> + Sub<FEncode, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar> + Add<FEncode, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar, Output = <PE as PackedField>::Scalar> + TryInto<FEncode> + Sized + From<FEncode> + Field<Output = <PE as PackedField>::Scalar> + WithUnderlier + Zeroable + InvertOrZero + Square + for<'a> MulAssign<&'a <PE as PackedField>::Scalar> + for<'a> SubAssign<&'a <PE as PackedField>::Scalar> + for<'a> AddAssign<&'a <PE as PackedField>::Scalar> + MulAssign + SubAssign + AddAssign + for<'a> Product<&'a <PE as PackedField>::Scalar> + for<'a> Sum<&'a <PE as PackedField>::Scalar> + for<'a> Mul<&'a <PE as PackedField>::Scalar> + for<'a> Sub<&'a <PE as PackedField>::Scalar> + for<'a> Add<&'a <PE as PackedField>::Scalar> + Product + Sum + Mul + Sub + Add + Neg + Debug + Sync + Send + Default + Clone + Copy + Eq + PartialEq + MulAssign<FDomain> + SubAssign<FDomain> + AddAssign<FDomain> + Mul<FDomain> + Sub<FDomain> + Add<FDomain> + TryInto<FDomain> + From<FDomain> + MulAssign<F> + SubAssign<F> + AddAssign<F> + Mul<F> + Sub<F> + Add<F> + TryInto<F> + From<F> + ExtensionField<BinaryField1b> + MulAssign<BinaryField1b> + SubAssign<BinaryField1b> + AddAssign<BinaryField1b> + Mul<BinaryField1b> + Sub<BinaryField1b> + Add<BinaryField1b> + TryInto<BinaryField1b> + From<BinaryField1b> + 'static + UnwindSafe,
<<PE as PackedField>::Scalar as WithUnderlier>::Underlier: PackScalar<<PE as PackedField>::Scalar> + UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + Sized + 'static,
PE: Zeroable + Sync + Send + Product + Sum + MulAssign<<PE as PackedField>::Scalar> + SubAssign<<PE as PackedField>::Scalar> + AddAssign<<PE as PackedField>::Scalar> + Mul<<PE as PackedField>::Scalar, Output = PE, Output = PE> + Sub<<PE as PackedField>::Scalar, Output = PE, Output = PE> + Add<<PE as PackedField>::Scalar, Output = PE, Output = PE> + MulAssign + SubAssign + AddAssign + Mul + Sub + Add + Eq + PartialEq + Copy + Clone + Debug + Default + 'static + UnwindSafe,
FEncode: ExtensionField<BinaryField1b, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode, Output = FEncode> + MulAssign<BinaryField1b> + SubAssign<BinaryField1b> + AddAssign<BinaryField1b> + Mul<BinaryField1b> + Sub<BinaryField1b> + Add<BinaryField1b> + TryInto<BinaryField1b> + From<BinaryField1b> + Field + WithUnderlier + Zeroable + InvertOrZero + Square + for<'a> MulAssign<&'a FEncode> + for<'a> SubAssign<&'a FEncode> + for<'a> AddAssign<&'a FEncode> + MulAssign + SubAssign + AddAssign + for<'a> Product<&'a FEncode> + for<'a> Sum<&'a FEncode> + for<'a> Mul<&'a FEncode> + for<'a> Sub<&'a FEncode> + for<'a> Add<&'a FEncode> + Product + Sum + Mul + Sub + Add + Neg + Debug + Sync + Send + Default + Clone + Copy + Eq + PartialEq + 'static + UnwindSafe,
<FEncode as WithUnderlier>::Underlier: PackScalar<FEncode> + UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + Sized + 'static,
<FDomain as WithUnderlier>::Underlier: PackScalar<FDomain> + UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + Sized + 'static,
FDomain: WithUnderlier + Zeroable + InvertOrZero + Square + for<'a> MulAssign<&'a FDomain> + for<'a> SubAssign<&'a FDomain> + for<'a> AddAssign<&'a FDomain> + MulAssign + SubAssign + AddAssign + for<'a> Product<&'a FDomain> + for<'a> Sum<&'a FDomain> + for<'a> Mul<&'a FDomain, Output = FDomain, Output = FDomain> + for<'a> Sub<&'a FDomain, Output = FDomain, Output = FDomain> + for<'a> Add<&'a FDomain, Output = FDomain, Output = FDomain> + Product + Sum + Mul + Sub + Add + Neg<Output = FDomain> + Debug + Sync + Send + Default + Clone + Copy + Eq + PartialEq + 'static + UnwindSafe,
<F as WithUnderlier>::Underlier: PackScalar<F> + UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + Sized + 'static,
F: WithUnderlier + Zeroable + InvertOrZero + Square + for<'a> MulAssign<&'a F> + for<'a> SubAssign<&'a F> + for<'a> AddAssign<&'a F> + MulAssign + SubAssign + AddAssign + for<'a> Product<&'a F> + for<'a> Sum<&'a F> + for<'a> Mul<&'a F, Output = F, Output = F> + for<'a> Sub<&'a F, Output = F, Output = F> + for<'a> Add<&'a F, Output = F, Output = F> + Product + Sum + Mul + Sub + Add + Neg<Output = F> + Debug + Sync + Send + Default + Clone + Copy + Eq + PartialEq + 'static + UnwindSafe,
VCS: UnwindSafe,
DomainFactory: UnwindSafe,
<PE as PackedExtension<FEncode>>::PackedSubfield: 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
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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