SimdOption in simba::simd - Rust
Description: Generalization of Option for SIMD computation.
Keywords: rust, rustlang, rust-lang, SimdOption

# Struct simba::simd::SimdOption

source ·

    pub struct SimdOption<V: SimdValue> { /* private fields */ }

Expand description

Generalization of Option for SIMD computation.

## Implementations§

source§

### impl<V: SimdValue> SimdOption<V>

source

#### pub fn new(val: V, mask: V::SimdBool) -> Self

Creates a new SIMD option by combining a value and a mask indicating what lane of the value is valid.

source

#### pub fn mask(&self) -> V::SimdBool

Return the underlying SIMD boolean mask.

source

#### pub fn value(&self) -> &V

Return the underlying unfiltered value.

source

#### pub fn option(self) -> Option<V>

Converts this SIMD option to a strandard Option.

If all the bits of `self.mask` are 1, then this returns `Some(self.value())`. If any bit of `self.mask` is 0, then this returns `None`.

source

#### pub fn simd_unwrap(self) -> V

Retrieve the underlying value if all the bits of `self.mask` are 1.

Panics if any of the bits of `self.mask` is 0.

source

#### pub fn simd_unwrap_or(self, other: impl FnOnce() -> V) -> V

Merges the value of `self` with the value of `other`.

Each lane of the result with a corresponding bit mask set to 1 will be filled with the corresponding lanes of `self.value()`. The lanes of the result with a corresponding bit mask set to 0 will be filled with the corresponding lanes of `other()`.

The function in `other` should not do any side-effect. Indeed, implementors of this trait are free to decide in what cases `other` is called or not.

## Auto Trait Implementations§

§

### impl<V> RefUnwindSafe for SimdOption<V>where
V: RefUnwindSafe,
<V as SimdValue>::SimdBool: RefUnwindSafe,

§

### impl<V> Send for SimdOption<V>where
V: Send,
<V as SimdValue>::SimdBool: Send,

§

### impl<V> Sync for SimdOption<V>where
V: Sync,
<V as SimdValue>::SimdBool: Sync,

§

### impl<V> Unpin for SimdOption<V>where
V: Unpin,
<V as SimdValue>::SimdBool: Unpin,

§

### impl<V> UnwindSafe for SimdOption<V>where
V: UnwindSafe,
<V as SimdValue>::SimdBool: UnwindSafe,

## Blanket Implementations§

source§

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

source§

#### fn type_id(&self) -> TypeId

Gets the `TypeId` of `self`. Read more
source§

### impl<T> Borrow<T> for Twhere
T: ?Sized,

const: unstable · source§

#### fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

### impl<T> BorrowMut<T> for Twhere
T: ?Sized,

const: unstable · source§

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

Mutably borrows from an owned value. Read more
source§

### impl<T> From<T> for T

const: unstable · source§

#### fn from(t: T) -> T

Returns the argument unchanged.

source§

### impl<T, U> Into<U> for Twhere
U: From<T>,

const: unstable · 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, U> TryFrom<U> for Twhere
U: Into<T>,

§

#### type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
source§

### impl<T, U> TryInto<U> for Twhere
U: TryFrom<T>,

§

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

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.