Skip to main content

Vector

Struct Vector 

Source
#[repr(transparent)]
pub struct Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,
{ pub raw: <Arch as SimdKernel<T>>::Vector, /* private fields */ }
Expand description

A monomorphized vector register type wrapping the architecture-native raw register.

Fields§

§raw: <Arch as SimdKernel<T>>::Vector

The underlying raw vector register.

Implementations§

Source§

impl<T, Arch> Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source

pub const fn new(raw: <Arch as SimdKernel<T>>::Vector) -> Vector<T, Arch>

Create a new Vector wrapping a raw vector register.

Source

pub fn zero() -> Vector<T, Arch>

Construct a Vector with all lanes set to zero.

Source

pub fn try_zero() -> Result<Vector<T, Arch>, SimdError>

Try to construct a Vector with all lanes set to zero.

Source

pub fn splat(val: T) -> Vector<T, Arch>

Construct a Vector by broadcasting a scalar value to all lanes.

Source

pub fn try_splat(val: T) -> Result<Vector<T, Arch>, SimdError>

Try to construct a Vector by broadcasting a scalar value to all lanes.

Source

pub unsafe fn load_aligned(ptr: *const T) -> Vector<T, Arch>

Load a Vector from an aligned pointer.

§Safety

The host must support Arch’s target features, and ptr must be valid for reads and aligned to Arch::LANE_COUNT * size_of::<T>() bytes.

Source

pub unsafe fn load_unaligned(ptr: *const T) -> Vector<T, Arch>

Load a Vector from an unaligned pointer.

§Safety

The host must support Arch’s target features, and ptr must be valid for reads.

Source

pub unsafe fn store_aligned(self, ptr: *mut T)

Store the Vector elements to an aligned pointer.

§Safety

The host must support Arch’s target features, and ptr must be valid for writes and aligned to Arch::LANE_COUNT * size_of::<T>() bytes.

Source

pub unsafe fn store_unaligned(self, ptr: *mut T)

Store the Vector elements to an unaligned pointer.

§Safety

The host must support Arch’s target features, and ptr must be valid for writes.

Source

pub unsafe fn masked_load_unaligned( ptr: *const T, mask: Mask<T, Arch>, src: Vector<T, Arch>, ) -> Vector<T, Arch>

Masked load from an unaligned pointer: active lanes loaded from ptr, inactive lanes from src.

§Safety

The host must support Arch’s target features, and ptr must be valid for reads of Arch::LANE_COUNT elements.

Source

pub unsafe fn masked_store_unaligned(self, ptr: *mut T, mask: Mask<T, Arch>)

Masked store to an unaligned pointer: active lanes written to ptr, inactive lanes left unchanged.

§Safety

The host must support Arch’s target features, and ptr must be valid for writes of Arch::LANE_COUNT elements.

Source

pub fn load_unaligned_from_slice( data: &[T], ) -> Result<Vector<T, Arch>, SimdError>

Load one vector from the start of a slice using the unaligned kernel load.

Returns SimdError::InsufficientInputLength when data has fewer elements than Arch::LANE_COUNT.

Source

pub fn load_aligned_from_slice(data: &[T]) -> Result<Vector<T, Arch>, SimdError>

Load one vector from the start of a slice using the aligned kernel load.

Returns SimdError::InsufficientInputLength when data has fewer elements than Arch::LANE_COUNT, and SimdError::UnalignedAddress when the slice start is not aligned to the vector byte width.

Source

pub fn store_unaligned_to_slice(self, out: &mut [T]) -> Result<(), SimdError>

Store this vector to the start of a slice using the unaligned kernel store.

Returns SimdError::InsufficientOutputLength when out has fewer elements than Arch::LANE_COUNT.

Source

pub fn store_aligned_to_slice(self, out: &mut [T]) -> Result<(), SimdError>

Store this vector to the start of a slice using the aligned kernel store.

Returns SimdError::InsufficientOutputLength when out has fewer elements than Arch::LANE_COUNT, and SimdError::UnalignedAddress when the slice start is not aligned to the vector byte width.

Source

pub fn masked_load_from_slice( data: &[T], mask: Mask<T, Arch>, src: Vector<T, Arch>, ) -> Result<Vector<T, Arch>, SimdError>

Safe masked load from a slice.

Active lanes (according to mask) must reside within the bounds of data. Inactive lanes are populated from the corresponding lanes of src.

Source

pub fn masked_store_to_slice( self, data: &mut [T], mask: Mask<T, Arch>, ) -> Result<(), SimdError>

Safe masked store to a slice.

Active lanes (according to mask) must reside within the bounds of data. Inactive lanes in the slice are left unchanged.

Source

pub fn sum_reduce(self) -> T

Horizontal sum reduction of all lanes in the Vector.

Source

pub fn popcount(self) -> Vector<T, Arch>

Elementwise population count (number of set bits).

Source

pub fn horizontal_bitwise_and(self) -> T

Horizontal bitwise AND reduction across all lanes.

Source

pub fn horizontal_bitwise_or(self) -> T

Horizontal bitwise OR reduction across all lanes.

Source

pub fn horizontal_bitwise_xor(self) -> T

Horizontal bitwise XOR reduction across all lanes.

Source

pub fn abs(self) -> Vector<T, Arch>

Elementwise absolute value.

Source

pub fn min(self, other: Vector<T, Arch>) -> Vector<T, Arch>

Elementwise minimum of self and other.

Source

pub fn max(self, other: Vector<T, Arch>) -> Vector<T, Arch>

Elementwise maximum of self and other.

Source

pub fn sqrt(self) -> Vector<T, Arch>

Elementwise square root.

Source

pub fn cmp_eq(self, other: Vector<T, Arch>) -> Vector<T, Arch>

Elementwise equal comparison (self == other).

Source

pub fn cmp_ne(self, other: Vector<T, Arch>) -> Vector<T, Arch>

Elementwise not-equal comparison (self != other).

Source

pub fn cmp_lt(self, other: Vector<T, Arch>) -> Vector<T, Arch>

Elementwise less-than comparison (self < other).

Source

pub fn cmp_le(self, other: Vector<T, Arch>) -> Vector<T, Arch>

Elementwise less-than-or-equal comparison (self <= other).

Source

pub fn cmp_gt(self, other: Vector<T, Arch>) -> Vector<T, Arch>

Elementwise greater-than comparison (self > other).

Source

pub fn cmp_ge(self, other: Vector<T, Arch>) -> Vector<T, Arch>

Elementwise greater-than-or-equal comparison (self >= other).

Source

pub fn blend( self, true_val: Vector<T, Arch>, false_val: Vector<T, Arch>, ) -> Vector<T, Arch>

Conditional blend: select lanes from true_val where the mask lane in self is active (sign bit set), and from false_val otherwise.

Source

pub fn from_array<const N: usize>(arr: [T; N]) -> Vector<T, Arch>

Create a Vector from an array of size N, where N must equal Arch::LANE_COUNT.

Source

pub fn try_from_array<const N: usize>( arr: [T; N], ) -> Result<Vector<T, Arch>, SimdError>

Try to create a Vector from an array of size N, where N must equal Arch::LANE_COUNT.

Source

pub fn to_array<const N: usize>(self) -> [T; N]

Convert the vector to an array of size N, where N must equal Arch::LANE_COUNT.

Source

pub fn to_bitmask(self) -> BitMask<64>

Convert this vector mask representation (sign bits) into a portable BitMask.

Source

pub fn cmp_eq_mask(self, other: Vector<T, Arch>) -> Mask<T, Arch>

Elementwise equal comparison returning a native Mask.

Source

pub fn cmp_ne_mask(self, other: Vector<T, Arch>) -> Mask<T, Arch>

Elementwise not-equal comparison returning a native Mask.

Source

pub fn cmp_lt_mask(self, other: Vector<T, Arch>) -> Mask<T, Arch>

Elementwise less-than comparison returning a native Mask.

Source

pub fn cmp_le_mask(self, other: Vector<T, Arch>) -> Mask<T, Arch>

Elementwise less-than-or-equal comparison returning a native Mask.

Source

pub fn cmp_gt_mask(self, other: Vector<T, Arch>) -> Mask<T, Arch>

Elementwise greater-than comparison returning a native Mask.

Source

pub fn cmp_ge_mask(self, other: Vector<T, Arch>) -> Mask<T, Arch>

Elementwise greater-than-or-equal comparison returning a native Mask.

Source

pub fn cast<U>(self) -> Vector<U, Arch>
where Arch: SimdKernel<U>, U: NumericElement + CastFrom<T>,

Cast the vector elements to another scalar type U where the lane counts match.

Source

pub fn extract<const I: usize>(self) -> T

Extract a single lane element by index at compile-time.

Source

pub fn insert<const I: usize>(self, val: T) -> Vector<T, Arch>

Insert a value into a single lane by index at compile-time.

Source

pub fn from_view_chunk<Align, Mode, Ref>( view: &SimdView<'_, T, Arch, Align, Mode, Ref>, chunk_idx: usize, ) -> Vector<T, Arch>
where Align: Alignment, Mode: ExecutionMode, Ref: Deref<Target = [T]>,

Load a Vector from a chunk index of a SimdView.

Source

pub fn store_to_view_chunk<'a, Align, Mode>( self, view: &mut SimdView<'a, T, Arch, Align, Mode, &'a mut [T]>, chunk_idx: usize, )
where Align: Alignment, Mode: ExecutionMode,

Store this Vector into a mutable chunk of a mutable SimdView.

Trait Implementations§

Source§

impl<T, Arch> Add for Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

type Output = Vector<T, Arch>

The resulting type after applying the + operator.
Source§

fn add(self, rhs: Vector<T, Arch>) -> Vector<T, Arch>

Performs the + operation. Read more
Source§

impl<'a, T, Arch> Add<&'a Vector<T, Arch>> for Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

type Output = Vector<T, Arch>

The resulting type after applying the + operator.
Source§

fn add( self, rhs: &'a Vector<T, Arch>, ) -> <Vector<T, Arch> as Add<&'a Vector<T, Arch>>>::Output

Performs the + operation. Read more
Source§

impl<'a, 'b, T, Arch> Add<&'b Vector<T, Arch>> for &'a Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

type Output = Vector<T, Arch>

The resulting type after applying the + operator.
Source§

fn add( self, rhs: &'b Vector<T, Arch>, ) -> <&'a Vector<T, Arch> as Add<&'b Vector<T, Arch>>>::Output

Performs the + operation. Read more
Source§

impl<'a, T, Arch> Add<Vector<T, Arch>> for &'a Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

type Output = Vector<T, Arch>

The resulting type after applying the + operator.
Source§

fn add( self, rhs: Vector<T, Arch>, ) -> <&'a Vector<T, Arch> as Add<Vector<T, Arch>>>::Output

Performs the + operation. Read more
Source§

impl<T, Arch> AddAssign for Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

fn add_assign(&mut self, rhs: Vector<T, Arch>)

Performs the += operation. Read more
Source§

impl<T, Arch> BitAnd for Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

type Output = Vector<T, Arch>

The resulting type after applying the & operator.
Source§

fn bitand(self, rhs: Vector<T, Arch>) -> Vector<T, Arch>

Performs the & operation. Read more
Source§

impl<'a, T, Arch> BitAnd<&'a Vector<T, Arch>> for Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

type Output = Vector<T, Arch>

The resulting type after applying the & operator.
Source§

fn bitand( self, rhs: &'a Vector<T, Arch>, ) -> <Vector<T, Arch> as BitAnd<&'a Vector<T, Arch>>>::Output

Performs the & operation. Read more
Source§

impl<'a, 'b, T, Arch> BitAnd<&'b Vector<T, Arch>> for &'a Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

type Output = Vector<T, Arch>

The resulting type after applying the & operator.
Source§

fn bitand( self, rhs: &'b Vector<T, Arch>, ) -> <&'a Vector<T, Arch> as BitAnd<&'b Vector<T, Arch>>>::Output

Performs the & operation. Read more
Source§

impl<'a, T, Arch> BitAnd<Vector<T, Arch>> for &'a Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

type Output = Vector<T, Arch>

The resulting type after applying the & operator.
Source§

fn bitand( self, rhs: Vector<T, Arch>, ) -> <&'a Vector<T, Arch> as BitAnd<Vector<T, Arch>>>::Output

Performs the & operation. Read more
Source§

impl<T, Arch> BitAndAssign for Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

fn bitand_assign(&mut self, rhs: Vector<T, Arch>)

Performs the &= operation. Read more
Source§

impl<T, Arch> BitOr for Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

type Output = Vector<T, Arch>

The resulting type after applying the | operator.
Source§

fn bitor(self, rhs: Vector<T, Arch>) -> Vector<T, Arch>

Performs the | operation. Read more
Source§

impl<'a, T, Arch> BitOr<&'a Vector<T, Arch>> for Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

type Output = Vector<T, Arch>

The resulting type after applying the | operator.
Source§

fn bitor( self, rhs: &'a Vector<T, Arch>, ) -> <Vector<T, Arch> as BitOr<&'a Vector<T, Arch>>>::Output

Performs the | operation. Read more
Source§

impl<'a, 'b, T, Arch> BitOr<&'b Vector<T, Arch>> for &'a Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

type Output = Vector<T, Arch>

The resulting type after applying the | operator.
Source§

fn bitor( self, rhs: &'b Vector<T, Arch>, ) -> <&'a Vector<T, Arch> as BitOr<&'b Vector<T, Arch>>>::Output

Performs the | operation. Read more
Source§

impl<'a, T, Arch> BitOr<Vector<T, Arch>> for &'a Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

type Output = Vector<T, Arch>

The resulting type after applying the | operator.
Source§

fn bitor( self, rhs: Vector<T, Arch>, ) -> <&'a Vector<T, Arch> as BitOr<Vector<T, Arch>>>::Output

Performs the | operation. Read more
Source§

impl<T, Arch> BitOrAssign for Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

fn bitor_assign(&mut self, rhs: Vector<T, Arch>)

Performs the |= operation. Read more
Source§

impl<T, Arch> BitXor for Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

type Output = Vector<T, Arch>

The resulting type after applying the ^ operator.
Source§

fn bitxor(self, rhs: Vector<T, Arch>) -> Vector<T, Arch>

Performs the ^ operation. Read more
Source§

impl<'a, T, Arch> BitXor<&'a Vector<T, Arch>> for Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

type Output = Vector<T, Arch>

The resulting type after applying the ^ operator.
Source§

fn bitxor( self, rhs: &'a Vector<T, Arch>, ) -> <Vector<T, Arch> as BitXor<&'a Vector<T, Arch>>>::Output

Performs the ^ operation. Read more
Source§

impl<'a, 'b, T, Arch> BitXor<&'b Vector<T, Arch>> for &'a Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

type Output = Vector<T, Arch>

The resulting type after applying the ^ operator.
Source§

fn bitxor( self, rhs: &'b Vector<T, Arch>, ) -> <&'a Vector<T, Arch> as BitXor<&'b Vector<T, Arch>>>::Output

Performs the ^ operation. Read more
Source§

impl<'a, T, Arch> BitXor<Vector<T, Arch>> for &'a Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

type Output = Vector<T, Arch>

The resulting type after applying the ^ operator.
Source§

fn bitxor( self, rhs: Vector<T, Arch>, ) -> <&'a Vector<T, Arch> as BitXor<Vector<T, Arch>>>::Output

Performs the ^ operation. Read more
Source§

impl<T, Arch> BitXorAssign for Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

fn bitxor_assign(&mut self, rhs: Vector<T, Arch>)

Performs the ^= operation. Read more
Source§

impl<T, Arch> Clone for Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

fn clone(&self) -> Vector<T, Arch>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<T, Arch> Copy for Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

impl<T, Arch> Debug for Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement + Debug,

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<T, Arch> Div for Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

type Output = Vector<T, Arch>

The resulting type after applying the / operator.
Source§

fn div(self, rhs: Vector<T, Arch>) -> Vector<T, Arch>

Performs the / operation. Read more
Source§

impl<'a, T, Arch> Div<&'a Vector<T, Arch>> for Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

type Output = Vector<T, Arch>

The resulting type after applying the / operator.
Source§

fn div( self, rhs: &'a Vector<T, Arch>, ) -> <Vector<T, Arch> as Div<&'a Vector<T, Arch>>>::Output

Performs the / operation. Read more
Source§

impl<'a, 'b, T, Arch> Div<&'b Vector<T, Arch>> for &'a Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

type Output = Vector<T, Arch>

The resulting type after applying the / operator.
Source§

fn div( self, rhs: &'b Vector<T, Arch>, ) -> <&'a Vector<T, Arch> as Div<&'b Vector<T, Arch>>>::Output

Performs the / operation. Read more
Source§

impl<'a, T, Arch> Div<Vector<T, Arch>> for &'a Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

type Output = Vector<T, Arch>

The resulting type after applying the / operator.
Source§

fn div( self, rhs: Vector<T, Arch>, ) -> <&'a Vector<T, Arch> as Div<Vector<T, Arch>>>::Output

Performs the / operation. Read more
Source§

impl<T, Arch> DivAssign for Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

fn div_assign(&mut self, rhs: Vector<T, Arch>)

Performs the /= operation. Read more
Source§

impl<T, Arch> Eq for Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement + Eq,

Source§

impl<T, Arch> Mul for Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

type Output = Vector<T, Arch>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: Vector<T, Arch>) -> Vector<T, Arch>

Performs the * operation. Read more
Source§

impl<'a, T, Arch> Mul<&'a Vector<T, Arch>> for Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

type Output = Vector<T, Arch>

The resulting type after applying the * operator.
Source§

fn mul( self, rhs: &'a Vector<T, Arch>, ) -> <Vector<T, Arch> as Mul<&'a Vector<T, Arch>>>::Output

Performs the * operation. Read more
Source§

impl<'a, 'b, T, Arch> Mul<&'b Vector<T, Arch>> for &'a Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

type Output = Vector<T, Arch>

The resulting type after applying the * operator.
Source§

fn mul( self, rhs: &'b Vector<T, Arch>, ) -> <&'a Vector<T, Arch> as Mul<&'b Vector<T, Arch>>>::Output

Performs the * operation. Read more
Source§

impl<'a, T, Arch> Mul<Vector<T, Arch>> for &'a Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

type Output = Vector<T, Arch>

The resulting type after applying the * operator.
Source§

fn mul( self, rhs: Vector<T, Arch>, ) -> <&'a Vector<T, Arch> as Mul<Vector<T, Arch>>>::Output

Performs the * operation. Read more
Source§

impl<T, Arch> MulAssign for Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

fn mul_assign(&mut self, rhs: Vector<T, Arch>)

Performs the *= operation. Read more
Source§

impl<T, Arch> Neg for Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

type Output = Vector<T, Arch>

The resulting type after applying the - operator.
Source§

fn neg(self) -> Vector<T, Arch>

Performs the unary - operation. Read more
Source§

impl<T, Arch> Neg for &Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

type Output = Vector<T, Arch>

The resulting type after applying the - operator.
Source§

fn neg(self) -> <&Vector<T, Arch> as Neg>::Output

Performs the unary - operation. Read more
Source§

impl<T, Arch> Not for Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

type Output = Vector<T, Arch>

The resulting type after applying the ! operator.
Source§

fn not(self) -> Vector<T, Arch>

Performs the unary ! operation. Read more
Source§

impl<T, Arch> Not for &Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

type Output = Vector<T, Arch>

The resulting type after applying the ! operator.
Source§

fn not(self) -> <&Vector<T, Arch> as Not>::Output

Performs the unary ! operation. Read more
Source§

impl<T, Arch> PartialEq for Vector<T, Arch>

Source§

fn eq(&self, other: &Vector<T, Arch>) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl<T, Arch> Sub for Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

type Output = Vector<T, Arch>

The resulting type after applying the - operator.
Source§

fn sub(self, rhs: Vector<T, Arch>) -> Vector<T, Arch>

Performs the - operation. Read more
Source§

impl<'a, T, Arch> Sub<&'a Vector<T, Arch>> for Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

type Output = Vector<T, Arch>

The resulting type after applying the - operator.
Source§

fn sub( self, rhs: &'a Vector<T, Arch>, ) -> <Vector<T, Arch> as Sub<&'a Vector<T, Arch>>>::Output

Performs the - operation. Read more
Source§

impl<'a, 'b, T, Arch> Sub<&'b Vector<T, Arch>> for &'a Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

type Output = Vector<T, Arch>

The resulting type after applying the - operator.
Source§

fn sub( self, rhs: &'b Vector<T, Arch>, ) -> <&'a Vector<T, Arch> as Sub<&'b Vector<T, Arch>>>::Output

Performs the - operation. Read more
Source§

impl<'a, T, Arch> Sub<Vector<T, Arch>> for &'a Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

type Output = Vector<T, Arch>

The resulting type after applying the - operator.
Source§

fn sub( self, rhs: Vector<T, Arch>, ) -> <&'a Vector<T, Arch> as Sub<Vector<T, Arch>>>::Output

Performs the - operation. Read more
Source§

impl<T, Arch> SubAssign for Vector<T, Arch>
where Arch: SimdArch + SimdKernel<T>, T: NumericElement,

Source§

fn sub_assign(&mut self, rhs: Vector<T, Arch>)

Performs the -= operation. Read more

Auto Trait Implementations§

§

impl<T, Arch> Freeze for Vector<T, Arch>
where <Arch as SimdKernel<T>>::Vector: Freeze,

§

impl<T, Arch> RefUnwindSafe for Vector<T, Arch>
where <Arch as SimdKernel<T>>::Vector: RefUnwindSafe, T: RefUnwindSafe,

§

impl<T, Arch> Send for Vector<T, Arch>

§

impl<T, Arch> Sync for Vector<T, Arch>

§

impl<T, Arch> Unpin for Vector<T, Arch>
where <Arch as SimdKernel<T>>::Vector: Unpin, T: Unpin,

§

impl<T, Arch> UnsafeUnpin for Vector<T, Arch>
where <Arch as SimdKernel<T>>::Vector: UnsafeUnpin,

§

impl<T, Arch> UnwindSafe for Vector<T, Arch>
where <Arch as SimdKernel<T>>::Vector: UnwindSafe, T: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> ArchivePointee for T

Source§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
Source§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CastTo for T
where T: Copy,

Source§

fn cast_to<U>(self) -> U
where U: CastFrom<Self>,

Cast self to type U.
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<F, W, T, D> Deserialize<With<T, W>, D> for F
where W: DeserializeWith<F, T, D>, D: Fallible + ?Sized, F: ?Sized,

Source§

fn deserialize( &self, deserializer: &mut D, ) -> Result<With<T, W>, <D as Fallible>::Error>

Deserializes using the given deserializer
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Pointee for T

Source§

type Metadata = ()

The type for metadata in pointers and references to Self.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.