pub trait Environment: 'static + Copy + Clone + Debug + PartialEq<Self> + Eq + Hash + Serialize + DeserializeOwned + Send + Sync {
    type Affine: AffineCurve
    where
        <Self::Affine as AffineCurve>::Projective == Self::Projective,
        <Self::Affine as AffineCurve>::BaseField == Self::Field,
        <Self::Affine as AffineCurve>::ScalarField == Self::Scalar,
        <Self::Affine as AffineCurve>::Coordinates == (Self::Field, Self::Field);
    type BigInteger: BigInteger;
    type Field: PrimeField + SquareRootField + Copy
    where
        <Self::Field as PrimeField>::BigInteger == Self::BigInteger;
    type PairingCurve: PairingEngine
    where
        <Self::PairingCurve as PairingEngine>::Fr == Self::Field;
    type Projective: ProjectiveCurve
    where
        <Self::Projective as ProjectiveCurve>::Affine == Self::Affine,
        <Self::Projective as ProjectiveCurve>::BaseField == Self::Field,
        <Self::Projective as ProjectiveCurve>::ScalarField == Self::Scalar;
    type Scalar: PrimeField + Copy
    where
        <Self::Scalar as PrimeField>::BigInteger == Self::BigInteger;
    const EDWARDS_A: Self::Field;
    const EDWARDS_D: Self::Field;
    const MONTGOMERY_A: Self::Field;
    const MONTGOMERY_B: Self::Field;
    const MAX_STRING_BYTES: u32 = 255u32;
    fn halt<S, T>(message: S) -> T
    where
        S: Into<String>,
    { ... }
}Required Associated Types
sourcetype Affine: AffineCurve 
type Affine: AffineCurve 
where
    <Self::Affine as AffineCurve>::Projective == Self::Projective,
    <Self::Affine as AffineCurve>::BaseField == Self::Field,
    <Self::Affine as AffineCurve>::ScalarField == Self::Scalar,
    <Self::Affine as AffineCurve>::Coordinates == (Self::Field, Self::Field)
source
type BigInteger: BigInteger
sourcetype Field: PrimeField + SquareRootField + Copy 
type Field: PrimeField + SquareRootField + Copy 
where
    <Self::Field as PrimeField>::BigInteger == Self::BigInteger
sourcetype PairingCurve: PairingEngine 
type PairingCurve: PairingEngine 
where
    <Self::PairingCurve as PairingEngine>::Fr == Self::Field
sourcetype Projective: ProjectiveCurve 
type Projective: ProjectiveCurve 
where
    <Self::Projective as ProjectiveCurve>::Affine == Self::Affine,
    <Self::Projective as ProjectiveCurve>::BaseField == Self::Field,
    <Self::Projective as ProjectiveCurve>::ScalarField == Self::Scalar
sourcetype Scalar: PrimeField + Copy 
type Scalar: PrimeField + Copy 
where
    <Self::Scalar as PrimeField>::BigInteger == Self::BigInteger
Required Associated Constants
sourceconst MONTGOMERY_A: Self::Field
const MONTGOMERY_A: Self::Field
The coefficient A of the Montgomery curve.
sourceconst MONTGOMERY_B: Self::Field
const MONTGOMERY_B: Self::Field
The coefficient B of the Montgomery curve.
Provided Associated Constants
sourceconst MAX_STRING_BYTES: u32 = 255u32
const MAX_STRING_BYTES: u32 = 255u32
The maximum number of bytes allowed in a string.