extendr_api::prelude::modules::core

Trait Conjugate

pub unsafe trait Conjugate: Entity {
    type Conj: Entity + Conjugate<Conj = Self, Canonical = Self::Canonical>;
    type Canonical: Entity + Conjugate<Canonical = Self::Canonical>;

    // Required method
    fn canonicalize(self) -> Self::Canonical;
}
Expand description

Trait for types that may be implicitly conjugated.

§Safety

The associated types and functions must fulfill their respective contracts.

Required Associated Types§

type Conj: Entity + Conjugate<Conj = Self, Canonical = Self::Canonical>

Must have the same layout as Self, and Conj::Unit must have the same layout as Unit.

type Canonical: Entity + Conjugate<Canonical = Self::Canonical>

Must have the same layout as Self, and Canonical::Unit must have the same layout as Unit.

Required Methods§

fn canonicalize(self) -> Self::Canonical

Performs the implicit conjugation operation on the given value, returning the canonical form.

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§

§

impl Conjugate for f32

§

impl Conjugate for f64

§

impl<E> Conjugate for Complex<E>
where E: Entity + ComplexField,

§

type Conj = ComplexConj<E>

§

type Canonical = Complex<E>

§

fn canonicalize(self) -> <Complex<E> as Conjugate>::Canonical

Implementors§

§

impl Conjugate for c32

§

impl Conjugate for c32conj

§

type Conj = c32

§

type Canonical = c32

§

impl Conjugate for c64

§

impl Conjugate for c64conj

§

type Conj = c64

§

type Canonical = c64

§

impl Conjugate for Symbolic

§

type Conj = Symbolic

§

type Canonical = Symbolic

§

impl<E> Conjugate for ComplexConj<E>
where E: Entity + ComplexField,

§

type Conj = Complex<E>

§

type Canonical = Complex<E>