Skip to main content

Module

Trait Module 

Source
pub trait Module<Scalar>: AbelianGroup + Mul<Scalar, Output = Self>
where Scalar: CommutativeRing,
{ }
Expand description

Right scalar action of a commutative ring on an abelian group.

Module<Scalar> is parameterized by the scalar carrier. The element carrier is Self, and the scalar action is expressed by Self: Mul<Scalar>. In this crate that matches elliptic-curve notation as point * scalar.

A left action would be a different Rust operation shape, Scalar: Mul<Self>. Do not implement this trait for a left-only action by swapping argument meaning in the implementation.

Law: a * (s + t) == a * s + a * t.

Law: (a + b) * s == a * s + b * s.

Law: a * (s * t) == (a * s) * t.

Law: a * Scalar::one() == a.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§