pub trait MillerStep {
type Fp2;
// Required methods
fn miller_double_step(
s: &AffinePoint<Self::Fp2>,
) -> (AffinePoint<Self::Fp2>, UnevaluatedLine<Self::Fp2>);
fn miller_add_step(
s: &AffinePoint<Self::Fp2>,
q: &AffinePoint<Self::Fp2>,
) -> (AffinePoint<Self::Fp2>, UnevaluatedLine<Self::Fp2>);
fn miller_double_and_add_step(
s: &AffinePoint<Self::Fp2>,
q: &AffinePoint<Self::Fp2>,
) -> (AffinePoint<Self::Fp2>, UnevaluatedLine<Self::Fp2>, UnevaluatedLine<Self::Fp2>);
}
Expand description
Trait definition for Miller step opcodes
Required Associated Types§
Required Methods§
Sourcefn miller_double_step(
s: &AffinePoint<Self::Fp2>,
) -> (AffinePoint<Self::Fp2>, UnevaluatedLine<Self::Fp2>)
fn miller_double_step( s: &AffinePoint<Self::Fp2>, ) -> (AffinePoint<Self::Fp2>, UnevaluatedLine<Self::Fp2>)
Miller double step
Sourcefn miller_add_step(
s: &AffinePoint<Self::Fp2>,
q: &AffinePoint<Self::Fp2>,
) -> (AffinePoint<Self::Fp2>, UnevaluatedLine<Self::Fp2>)
fn miller_add_step( s: &AffinePoint<Self::Fp2>, q: &AffinePoint<Self::Fp2>, ) -> (AffinePoint<Self::Fp2>, UnevaluatedLine<Self::Fp2>)
Miller add step
Sourcefn miller_double_and_add_step(
s: &AffinePoint<Self::Fp2>,
q: &AffinePoint<Self::Fp2>,
) -> (AffinePoint<Self::Fp2>, UnevaluatedLine<Self::Fp2>, UnevaluatedLine<Self::Fp2>)
fn miller_double_and_add_step( s: &AffinePoint<Self::Fp2>, q: &AffinePoint<Self::Fp2>, ) -> (AffinePoint<Self::Fp2>, UnevaluatedLine<Self::Fp2>, UnevaluatedLine<Self::Fp2>)
Miller double and add step (2S + Q implemented as S + Q + S for efficiency)
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.