pub trait AbstractModule<OpGroup: Operator = Additive, OpAdd: Operator = Additive, OpMul: Operator = Multiplicative>: AbstractGroupAbelian<OpGroup> {
type AbstractRing: AbstractRingCommutative<OpAdd, OpMul>;
// Required method
fn multiply_by(&self, r: Self::AbstractRing) -> Self;
}Expand description
A module combines two sets: one with an Abelian group structure and another with a commutative ring structure.
OpGroup denotes the Abelian group operator (usually the addition). In addition, and external
multiplicative law noted ∘ is defined. Let S be the ring with multiplicative operator
OpMul noted ×, multiplicative identity element noted 1, and additive operator OpAdd.
Then:
∀ a, b ∈ S
∀ x, y ∈ Self
a ∘ (x + y) = (a ∘ x) + (a ∘ y)
(a + b) ∘ x = (a ∘ x) + (b ∘ x)
(a × b) ∘ x = a ∘ (b ∘ x)
1 ∘ x = xRequired Associated Types§
Sourcetype AbstractRing: AbstractRingCommutative<OpAdd, OpMul>
type AbstractRing: AbstractRingCommutative<OpAdd, OpMul>
The underlying scalar field.
Required Methods§
Sourcefn multiply_by(&self, r: Self::AbstractRing) -> Self
fn multiply_by(&self, r: Self::AbstractRing) -> Self
Multiplies an element of the ring with an element of the module.
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.