pub trait BW6Config: 'static + Sized {
type Fp: PrimeField + Into<<Self::Fp as PrimeField>::BigInt>;
type Fp3Config: Fp3Config<Fp = Self::Fp>;
type Fp6Config: Fp6Config<Fp3Config = Self::Fp3Config>;
type G1Config: SWCurveConfig<BaseField = Self::Fp>;
type G2Config: SWCurveConfig<BaseField = Self::Fp, ScalarField = <Self::G1Config as CurveConfig>::ScalarField>;
const X: <Self::Fp as PrimeField>::BigInt;
const X_IS_NEGATIVE: bool;
const ATE_LOOP_COUNT_1: &'static [u64];
const ATE_LOOP_COUNT_1_IS_NEGATIVE: bool;
const ATE_LOOP_COUNT_2: &'static [i8];
const ATE_LOOP_COUNT_2_IS_NEGATIVE: bool;
const TWIST_TYPE: TwistType;
// Required methods
fn final_exponentiation(
f: MillerLoopOutput<BW6<Self>>,
) -> Option<PairingOutput<BW6<Self>>>;
fn multi_miller_loop(
a: impl IntoIterator<Item = impl Into<G1Prepared<Self>>>,
b: impl IntoIterator<Item = impl Into<G2Prepared<Self>>>,
) -> MillerLoopOutput<BW6<Self>>;
}Required Associated Constants§
const X: <Self::Fp as PrimeField>::BigInt
const X_IS_NEGATIVE: bool
const ATE_LOOP_COUNT_1: &'static [u64]
const ATE_LOOP_COUNT_1_IS_NEGATIVE: bool
const ATE_LOOP_COUNT_2: &'static [i8]
const ATE_LOOP_COUNT_2_IS_NEGATIVE: bool
const TWIST_TYPE: TwistType
Required Associated Types§
type Fp: PrimeField + Into<<Self::Fp as PrimeField>::BigInt>
type Fp3Config: Fp3Config<Fp = Self::Fp>
type Fp6Config: Fp6Config<Fp3Config = Self::Fp3Config>
type G1Config: SWCurveConfig<BaseField = Self::Fp>
type G2Config: SWCurveConfig<BaseField = Self::Fp, ScalarField = <Self::G1Config as CurveConfig>::ScalarField>
Required Methods§
fn final_exponentiation( f: MillerLoopOutput<BW6<Self>>, ) -> Option<PairingOutput<BW6<Self>>>
fn multi_miller_loop( a: impl IntoIterator<Item = impl Into<G1Prepared<Self>>>, b: impl IntoIterator<Item = impl Into<G2Prepared<Self>>>, ) -> MillerLoopOutput<BW6<Self>>
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.