[go: up one dir, main page]

Trait AbstractModule

Source
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       = x

Required Associated Types§

Source

type AbstractRing: AbstractRingCommutative<OpAdd, OpMul>

The underlying scalar field.

Required Methods§

Source

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.

Implementations on Foreign Types§

Source§

impl AbstractModule for f32

Source§

type AbstractRing = f32

Source§

fn multiply_by(&self, r: f32) -> Self

Source§

impl AbstractModule for f64

Source§

type AbstractRing = f64

Source§

fn multiply_by(&self, r: f64) -> Self

Source§

impl AbstractModule for i8

Source§

type AbstractRing = i8

Source§

fn multiply_by(&self, r: i8) -> Self

Source§

impl AbstractModule for i16

Source§

type AbstractRing = i16

Source§

fn multiply_by(&self, r: i16) -> Self

Source§

impl AbstractModule for i32

Source§

type AbstractRing = i32

Source§

fn multiply_by(&self, r: i32) -> Self

Source§

impl AbstractModule for i64

Source§

type AbstractRing = i64

Source§

fn multiply_by(&self, r: i64) -> Self

Source§

impl AbstractModule for isize

Source§

impl<N: AbstractRingCommutative<Additive, Multiplicative> + Num + ClosedNeg> AbstractModule for Complex<N>

Source§

type AbstractRing = N

Source§

fn multiply_by(&self, r: N) -> Self

Implementors§