Trait faer_entity::Entity

source ·
pub unsafe trait Entity: Copy + Pod + PartialEq + Send + Sync + Debug + 'static {
    type Group: ForType + ForCopyType;
    type Unit: Copy + Pod + PartialEq + Send + Sync + Debug + 'static;
    type Index: Copy + Pod + Send + Sync + Debug + 'static;
    type SimdUnit<S: Simd>: Copy + Pod + Send + Sync + Debug + 'static;
    type SimdMask<S: Simd>: Copy + Send + Sync + Debug + 'static;
    type SimdIndex<S: Simd>: Copy + Send + Sync + Debug + 'static;
    type Iter<I: Iterator>: Iterator<Item = GroupFor<Self, I::Item>>;

    const N_COMPONENTS: usize;
    const UNIT: GroupFor<Self, ()>;
Show 20 methods // Required methods fn faer_from_units(group: GroupFor<Self, UnitFor<Self>>) -> Self; fn faer_into_units(self) -> GroupFor<Self, UnitFor<Self>>; fn faer_as_ref<T>(group: &GroupFor<Self, T>) -> GroupFor<Self, &T>; fn faer_as_mut<T>(group: &mut GroupFor<Self, T>) -> GroupFor<Self, &mut T>; fn faer_map_impl<T, U>( group: GroupFor<Self, T>, f: &mut impl FnMut(T) -> U ) -> GroupFor<Self, U>; fn faer_zip<T, U>( first: GroupFor<Self, T>, second: GroupFor<Self, U> ) -> GroupFor<Self, (T, U)>; fn faer_unzip<T, U>( zipped: GroupFor<Self, (T, U)> ) -> (GroupFor<Self, T>, GroupFor<Self, U>); fn faer_map_with_context<Ctx, T, U>( ctx: Ctx, group: GroupFor<Self, T>, f: &mut impl FnMut(Ctx, T) -> (Ctx, U) ) -> (Ctx, GroupFor<Self, U>); fn faer_into_iter<I: IntoIterator>( iter: GroupFor<Self, I> ) -> Self::Iter<I::IntoIter>; // Provided methods fn faer_map<T, U>( group: GroupFor<Self, T>, f: impl FnMut(T) -> U ) -> GroupFor<Self, U> { ... } fn faer_unzip2<T>(zipped: GroupFor<Self, [T; 2]>) -> [GroupFor<Self, T>; 2] { ... } fn faer_unzip4<T>(zipped: GroupFor<Self, [T; 4]>) -> [GroupFor<Self, T>; 4] { ... } fn faer_unzip8<T>(zipped: GroupFor<Self, [T; 8]>) -> [GroupFor<Self, T>; 8] { ... } fn faer_as_arrays<const N: usize, T>( group: GroupFor<Self, &[T]> ) -> (GroupFor<Self, &[[T; N]]>, GroupFor<Self, &[T]>) { ... } fn faer_as_arrays_mut<const N: usize, T>( group: GroupFor<Self, &mut [T]> ) -> (GroupFor<Self, &mut [[T; N]]>, GroupFor<Self, &mut [T]>) { ... } fn faer_deref<T: Copy>(group: GroupFor<Self, &T>) -> GroupFor<Self, T> { ... } fn faer_rb<'short, T: Reborrow<'short>>( value: GroupFor<Self, &'short T> ) -> GroupFor<Self, T::Target> { ... } fn faer_rb_mut<'short, T: ReborrowMut<'short>>( value: GroupFor<Self, &'short mut T> ) -> GroupFor<Self, T::Target> { ... } fn faer_into_const<T: IntoConst>( value: GroupFor<Self, T> ) -> GroupFor<Self, T::Target> { ... } fn faer_copy<T: Copy>(x: &GroupFor<Self, T>) -> GroupFor<Self, T> { ... }
}
Expand description

Unstable core trait for describing how a scalar value may be split up into individual component.

For example, f64 is treated as a single indivisible unit, but num_complex::Complex<f64> is split up into its real and imaginary components, with each one being stored in a separate container.

Safety

The associated types and functions must fulfill their respective contracts.

Required Associated Types§

source

type Group: ForType + ForCopyType

source

type Unit: Copy + Pod + PartialEq + Send + Sync + Debug + 'static

source

type Index: Copy + Pod + Send + Sync + Debug + 'static

source

type SimdUnit<S: Simd>: Copy + Pod + Send + Sync + Debug + 'static

source

type SimdMask<S: Simd>: Copy + Send + Sync + Debug + 'static

source

type SimdIndex<S: Simd>: Copy + Send + Sync + Debug + 'static

source

type Iter<I: Iterator>: Iterator<Item = GroupFor<Self, I::Item>>

Required Associated Constants§

Required Methods§

source

fn faer_from_units(group: GroupFor<Self, UnitFor<Self>>) -> Self

source

fn faer_into_units(self) -> GroupFor<Self, UnitFor<Self>>

source

fn faer_as_ref<T>(group: &GroupFor<Self, T>) -> GroupFor<Self, &T>

source

fn faer_as_mut<T>(group: &mut GroupFor<Self, T>) -> GroupFor<Self, &mut T>

source

fn faer_map_impl<T, U>( group: GroupFor<Self, T>, f: &mut impl FnMut(T) -> U ) -> GroupFor<Self, U>

source

fn faer_zip<T, U>( first: GroupFor<Self, T>, second: GroupFor<Self, U> ) -> GroupFor<Self, (T, U)>

source

fn faer_unzip<T, U>( zipped: GroupFor<Self, (T, U)> ) -> (GroupFor<Self, T>, GroupFor<Self, U>)

source

fn faer_map_with_context<Ctx, T, U>( ctx: Ctx, group: GroupFor<Self, T>, f: &mut impl FnMut(Ctx, T) -> (Ctx, U) ) -> (Ctx, GroupFor<Self, U>)

source

fn faer_into_iter<I: IntoIterator>( iter: GroupFor<Self, I> ) -> Self::Iter<I::IntoIter>

Provided Methods§

source

fn faer_map<T, U>( group: GroupFor<Self, T>, f: impl FnMut(T) -> U ) -> GroupFor<Self, U>

source

fn faer_unzip2<T>(zipped: GroupFor<Self, [T; 2]>) -> [GroupFor<Self, T>; 2]

source

fn faer_unzip4<T>(zipped: GroupFor<Self, [T; 4]>) -> [GroupFor<Self, T>; 4]

source

fn faer_unzip8<T>(zipped: GroupFor<Self, [T; 8]>) -> [GroupFor<Self, T>; 8]

source

fn faer_as_arrays<const N: usize, T>( group: GroupFor<Self, &[T]> ) -> (GroupFor<Self, &[[T; N]]>, GroupFor<Self, &[T]>)

source

fn faer_as_arrays_mut<const N: usize, T>( group: GroupFor<Self, &mut [T]> ) -> (GroupFor<Self, &mut [[T; N]]>, GroupFor<Self, &mut [T]>)

source

fn faer_deref<T: Copy>(group: GroupFor<Self, &T>) -> GroupFor<Self, T>

source

fn faer_rb<'short, T: Reborrow<'short>>( value: GroupFor<Self, &'short T> ) -> GroupFor<Self, T::Target>

source

fn faer_rb_mut<'short, T: ReborrowMut<'short>>( value: GroupFor<Self, &'short mut T> ) -> GroupFor<Self, T::Target>

source

fn faer_into_const<T: IntoConst>( value: GroupFor<Self, T> ) -> GroupFor<Self, T::Target>

source

fn faer_copy<T: Copy>(x: &GroupFor<Self, T>) -> GroupFor<Self, T>

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl Entity for f32

§

type Unit = f32

§

type Index = u32

§

type SimdUnit<S: Simd> = <S as Simd>::f32s

§

type SimdMask<S: Simd> = <S as Simd>::m32s

§

type SimdIndex<S: Simd> = <S as Simd>::u32s

§

type Group = IdentityGroup

§

type Iter<I: Iterator> = I

source§

const N_COMPONENTS: usize = 1usize

source§

const UNIT: GroupFor<Self, ()> = ()

source§

fn faer_from_units(group: GroupFor<Self, UnitFor<Self>>) -> Self

source§

fn faer_into_units(self) -> GroupFor<Self, UnitFor<Self>>

source§

fn faer_as_ref<T>(group: &GroupFor<Self, T>) -> GroupFor<Self, &T>

source§

fn faer_as_mut<T>(group: &mut GroupFor<Self, T>) -> GroupFor<Self, &mut T>

source§

fn faer_map_impl<T, U>( group: GroupFor<Self, T>, f: &mut impl FnMut(T) -> U ) -> GroupFor<Self, U>

source§

fn faer_map_with_context<Ctx, T, U>( ctx: Ctx, group: GroupFor<Self, T>, f: &mut impl FnMut(Ctx, T) -> (Ctx, U) ) -> (Ctx, GroupFor<Self, U>)

source§

fn faer_zip<T, U>( first: GroupFor<Self, T>, second: GroupFor<Self, U> ) -> GroupFor<Self, (T, U)>

source§

fn faer_unzip<T, U>( zipped: GroupFor<Self, (T, U)> ) -> (GroupFor<Self, T>, GroupFor<Self, U>)

source§

fn faer_into_iter<I: IntoIterator>( iter: GroupFor<Self, I> ) -> Self::Iter<I::IntoIter>

source§

impl Entity for f64

§

type Unit = f64

§

type Index = u64

§

type SimdUnit<S: Simd> = <S as Simd>::f64s

§

type SimdMask<S: Simd> = <S as Simd>::m64s

§

type SimdIndex<S: Simd> = <S as Simd>::u64s

§

type Group = IdentityGroup

§

type Iter<I: Iterator> = I

source§

const N_COMPONENTS: usize = 1usize

source§

const UNIT: GroupFor<Self, ()> = ()

source§

fn faer_from_units(group: GroupFor<Self, UnitFor<Self>>) -> Self

source§

fn faer_into_units(self) -> GroupFor<Self, UnitFor<Self>>

source§

fn faer_as_ref<T>(group: &GroupFor<Self, T>) -> GroupFor<Self, &T>

source§

fn faer_as_mut<T>(group: &mut GroupFor<Self, T>) -> GroupFor<Self, &mut T>

source§

fn faer_map_impl<T, U>( group: GroupFor<Self, T>, f: &mut impl FnMut(T) -> U ) -> GroupFor<Self, U>

source§

fn faer_map_with_context<Ctx, T, U>( ctx: Ctx, group: GroupFor<Self, T>, f: &mut impl FnMut(Ctx, T) -> (Ctx, U) ) -> (Ctx, GroupFor<Self, U>)

source§

fn faer_zip<T, U>( first: GroupFor<Self, T>, second: GroupFor<Self, U> ) -> GroupFor<Self, (T, U)>

source§

fn faer_unzip<T, U>( zipped: GroupFor<Self, (T, U)> ) -> (GroupFor<Self, T>, GroupFor<Self, U>)

source§

fn faer_into_iter<I: IntoIterator>( iter: GroupFor<Self, I> ) -> Self::Iter<I::IntoIter>

source§

impl<E: Entity> Entity for Complex<E>

§

type Unit = <E as Entity>::Unit

§

type Index = <E as Entity>::Index

§

type SimdUnit<S: Simd> = <E as Entity>::SimdUnit<S>

§

type SimdMask<S: Simd> = <E as Entity>::SimdMask<S>

§

type SimdIndex<S: Simd> = <E as Entity>::SimdIndex<S>

§

type Group = ComplexGroup<<E as Entity>::Group>

§

type Iter<I: Iterator> = ComplexIter<<E as Entity>::Iter<I>>

source§

const N_COMPONENTS: usize = _

source§

const UNIT: GroupFor<Self, ()> = _

source§

fn faer_from_units(group: GroupFor<Self, UnitFor<Self>>) -> Self

source§

fn faer_into_units(self) -> GroupFor<Self, UnitFor<Self>>

source§

fn faer_as_ref<T>(group: &GroupFor<Self, T>) -> GroupFor<Self, &T>

source§

fn faer_as_mut<T>(group: &mut GroupFor<Self, T>) -> GroupFor<Self, &mut T>

source§

fn faer_map_impl<T, U>( group: GroupFor<Self, T>, f: &mut impl FnMut(T) -> U ) -> GroupFor<Self, U>

source§

fn faer_map_with_context<Ctx, T, U>( ctx: Ctx, group: GroupFor<Self, T>, f: &mut impl FnMut(Ctx, T) -> (Ctx, U) ) -> (Ctx, GroupFor<Self, U>)

source§

fn faer_zip<T, U>( first: GroupFor<Self, T>, second: GroupFor<Self, U> ) -> GroupFor<Self, (T, U)>

source§

fn faer_unzip<T, U>( zipped: GroupFor<Self, (T, U)> ) -> (GroupFor<Self, T>, GroupFor<Self, U>)

source§

fn faer_into_iter<I: IntoIterator>( iter: GroupFor<Self, I> ) -> Self::Iter<I::IntoIter>

Implementors§

source§

impl Entity for Symbolic

§

type Unit = Symbolic

§

type Index = usize

§

type SimdUnit<S: Simd> = Symbolic

§

type SimdMask<S: Simd> = bool

§

type SimdIndex<S: Simd> = usize

§

type Group = IdentityGroup

§

type Iter<I: Iterator> = I

source§

const N_COMPONENTS: usize = 1usize

source§

const UNIT: GroupCopyFor<Self, ()> = ()

source§

impl<E: Entity> Entity for ComplexConj<E>

§

type Unit = <E as Entity>::Unit

§

type Index = <E as Entity>::Index

§

type SimdUnit<S: Simd> = <E as Entity>::SimdUnit<S>

§

type SimdMask<S: Simd> = <E as Entity>::SimdMask<S>

§

type SimdIndex<S: Simd> = <E as Entity>::SimdIndex<S>

§

type Group = ComplexConjGroup<<E as Entity>::Group>

§

type Iter<I: Iterator> = ComplexConjIter<<E as Entity>::Iter<I>>

source§

const N_COMPONENTS: usize = _

source§

const UNIT: GroupFor<Self, ()> = _