Trait Group
pub trait Group:
Sized
+ Clone
+ Copy
+ Debug
+ Eq
+ Send
+ Sync
+ 'static
+ Sum
+ for<'a> Sum<&'a Self>
+ Neg<Output = Self>
+ GroupOps
+ GroupOpsOwned
+ ScalarMul<Self::Scalar>
+ ScalarMulOwned<Self::Scalar> {
type Scalar: PrimeField;
// Required methods
fn random(rng: impl RngCore) -> Self;
fn identity() -> Self;
fn generator() -> Self;
fn is_identity(&self) -> Choice;
fn double(&self) -> Self;
}
Expand description
This trait represents an element of a cryptographic group.
Required Associated Types§
type Scalar: PrimeField
type Scalar: PrimeField
Scalars modulo the order of this group’s scalar field.
Required Methods§
fn random(rng: impl RngCore) -> Self
fn random(rng: impl RngCore) -> Self
Returns an element chosen uniformly at random from the non-identity elements of this group.
This function is non-deterministic, and samples from the user-provided RNG.
fn identity() -> Self
fn identity() -> Self
Returns the additive identity, also known as the “neutral element”.
fn generator() -> Self
fn generator() -> Self
Returns a fixed generator of the prime-order subgroup.
fn is_identity(&self) -> Choice
fn is_identity(&self) -> Choice
Determines if this point is the identity.
fn double(&self) -> Self
fn double(&self) -> Self
Doubles this element.
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.