Skip to main content

DualStruct

Trait DualStruct 

Source
pub trait DualStruct {
    type Real;
    type Inner: DualStruct;

    // Required methods
    fn re(&self) -> Self::Real;
    fn from_inner(inner: &Self::Inner) -> Self;
}
Expand description

A struct that contains dual numbers. Needed for arbitrary arguments in ImplicitFunction.

The trait is implemented for all dual types themselves, and common data types (tuple, vec, array, …) and can be implemented for custom data types to achieve full flexibility.

Required Associated Types§

Required Methods§

Source

fn re(&self) -> Self::Real

Source

fn from_inner(inner: &Self::Inner) -> Self

Dyn Compatibility§

This trait is not dyn compatible.

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

Implementations on Foreign Types§

Source§

impl DualStruct for ()

Source§

type Real = ()

Source§

type Inner = ()

Source§

fn re(&self)

Source§

fn from_inner(_: &Self::Inner) -> Self

Source§

impl DualStruct for f32

Source§

type Real = f32

Source§

type Inner = f32

Source§

fn re(&self) -> f32

Source§

fn from_inner(inner: &Self::Inner) -> Self

Source§

impl DualStruct for f64

Source§

type Real = f64

Source§

type Inner = f64

Source§

fn re(&self) -> f64

Source§

fn from_inner(inner: &Self::Inner) -> Self

Source§

impl<D: DualNum, R: Dim, C: Dim> DualStruct for OMatrix<D, R, C>

Available on crate feature nalgebra only.
Source§

type Real = Matrix<<D as DualStruct>::Real, R, C, <DefaultAllocator as Allocator<R, C>>::Buffer<<D as DualStruct>::Real>>

Source§

type Inner = Matrix<<D as DualNum>::InnerDual, R, C, <DefaultAllocator as Allocator<R, C>>::Buffer<<D as DualNum>::InnerDual>>

Source§

fn re(&self) -> Self::Real

Source§

fn from_inner(inner: &Self::Inner) -> Self

Source§

impl<T1: DualStruct, T2: DualStruct, T3: DualStruct, T4: DualStruct, T5: DualStruct> DualStruct for (T1, T2, T3, T4, T5)

Source§

type Real = (<T1 as DualStruct>::Real, <T2 as DualStruct>::Real, <T3 as DualStruct>::Real, <T4 as DualStruct>::Real, <T5 as DualStruct>::Real)

Source§

type Inner = (<T1 as DualStruct>::Inner, <T2 as DualStruct>::Inner, <T3 as DualStruct>::Inner, <T4 as DualStruct>::Inner, <T5 as DualStruct>::Inner)

Source§

fn re(&self) -> Self::Real

Source§

fn from_inner(inner: &Self::Inner) -> Self

Source§

impl<T1: DualStruct, T2: DualStruct, T3: DualStruct, T4: DualStruct> DualStruct for (T1, T2, T3, T4)

Source§

type Real = (<T1 as DualStruct>::Real, <T2 as DualStruct>::Real, <T3 as DualStruct>::Real, <T4 as DualStruct>::Real)

Source§

type Inner = (<T1 as DualStruct>::Inner, <T2 as DualStruct>::Inner, <T3 as DualStruct>::Inner, <T4 as DualStruct>::Inner)

Source§

fn re(&self) -> Self::Real

Source§

fn from_inner(inner: &Self::Inner) -> Self

Source§

impl<T1: DualStruct, T2: DualStruct, T3: DualStruct> DualStruct for (T1, T2, T3)

Source§

type Real = (<T1 as DualStruct>::Real, <T2 as DualStruct>::Real, <T3 as DualStruct>::Real)

Source§

type Inner = (<T1 as DualStruct>::Inner, <T2 as DualStruct>::Inner, <T3 as DualStruct>::Inner)

Source§

fn re(&self) -> Self::Real

Source§

fn from_inner(inner: &Self::Inner) -> Self

Source§

impl<T1: DualStruct, T2: DualStruct> DualStruct for (T1, T2)

Source§

type Real = (<T1 as DualStruct>::Real, <T2 as DualStruct>::Real)

Source§

type Inner = (<T1 as DualStruct>::Inner, <T2 as DualStruct>::Inner)

Source§

fn re(&self) -> Self::Real

Source§

fn from_inner(re: &Self::Inner) -> Self

Source§

impl<T: DualStruct, K: Clone + Eq + Hash> DualStruct for HashMap<K, T>

Source§

type Real = HashMap<K, <T as DualStruct>::Real>

Source§

type Inner = HashMap<K, <T as DualStruct>::Inner>

Source§

fn re(&self) -> Self::Real

Source§

fn from_inner(inner: &Self::Inner) -> Self

Source§

impl<T: DualStruct, const N: usize> DualStruct for [T; N]

Source§

type Real = [<T as DualStruct>::Real; N]

Source§

type Inner = [<T as DualStruct>::Inner; N]

Source§

fn re(&self) -> Self::Real

Source§

fn from_inner(re: &Self::Inner) -> Self

Source§

impl<T: DualStruct> DualStruct for Option<T>

Source§

type Real = Option<<T as DualStruct>::Real>

Source§

type Inner = Option<<T as DualStruct>::Inner>

Source§

fn re(&self) -> Self::Real

Source§

fn from_inner(inner: &Self::Inner) -> Self

Source§

impl<T: DualStruct> DualStruct for Vec<T>

Source§

type Real = Vec<<T as DualStruct>::Real>

Source§

type Inner = Vec<<T as DualStruct>::Inner>

Source§

fn re(&self) -> Self::Real

Source§

fn from_inner(inner: &Self::Inner) -> Self

Implementors§