[−]Trait nalgebra::SimdBool

```pub trait SimdBool: Copy + BitAnd<Self, Output = Self> + BitOr<Self, Output = Self> + BitXor<Self, Output = Self> {
fn and(self) -> bool;
fn or(self) -> bool;
fn xor(self) -> bool;
fn all(self) -> bool;
fn any(self) -> bool;
fn none(self) -> bool;
fn if_else<Res>(        self,         if_value: impl FnOnce() -> Res,         else_value: impl FnOnce() -> Res    ) -> Res    where        Res: SimdValue<SimdBool = Self>;
fn if_else2<Res>(        self,         if_value: impl FnOnce() -> Res,         else_if: (impl FnOnce() -> Self, impl FnOnce() -> Res),         else_value: impl FnOnce() -> Res    ) -> Res    where        Res: SimdValue<SimdBool = Self>;
fn if_else3<Res>(        self,         if_value: impl FnOnce() -> Res,         else_if: (impl FnOnce() -> Self, impl FnOnce() -> Res),         else_else_if: (impl FnOnce() -> Self, impl FnOnce() -> Res),         else_value: impl FnOnce() -> Res    ) -> Res    where        Res: SimdValue<SimdBool = Self>;
}```

Lane-wise generalization of `bool` for SIMD booleans.

This trait implemented by `bool` as well as SIMD boolean types like `packed_simd::m32x4`. It is designed to abstract the behavior of booleans so it can work with multi-lane boolean values in an AoSoA setting.

Required methods

`fn and(self) -> bool`

Lane-wise bitwise and of the vector elements.

`fn or(self) -> bool`

Lane-wise bitwise or of the vector elements.

`fn xor(self) -> bool`

Lane-wise bitwise xor of the vector elements.

`fn all(self) -> bool`

Are all vector lanes true?

`fn any(self) -> bool`

Is any vector lane true?

`fn none(self) -> bool`

Are all vector lanes false?

`fn if_else<Res>(    self,     if_value: impl FnOnce() -> Res,     else_value: impl FnOnce() -> Res) -> Res where    Res: SimdValue<SimdBool = Self>, `

Merges the value of `if_value()` and `else_value()` depending on the lanes of `self`.

• For each lane of `self` containing `1`, the result will contain the corresponding lane of `if_value()`.
• For each lane of `self` containing `0`, the result will contain the corresponding lane of `else_value()`.

The implementor of this trait is free to choose on what cases `if_value` and `else_value` are actually called.

`fn if_else2<Res>(    self,     if_value: impl FnOnce() -> Res,     else_if: (impl FnOnce() -> Self, impl FnOnce() -> Res),     else_value: impl FnOnce() -> Res) -> Res where    Res: SimdValue<SimdBool = Self>, `

Merges the value of `if_value()` and `else_if.1()` and `else_value()` depending on the lanes of `self` and `else_if.0()`.

• For each lane of `self` containing `1`, the result will contain the corresponding lane of `if_value()`.
• For each lane of `self` containing `0` but with a corresponding lane of `else_if.0()` containing `1`, the result will contain the corresponding lane of `else_if.1()`.
• For each lane of `self` containing `0` but with a corresponding lane of `else_if.0()` containing `0`, the result will contain the corresponding lane of `else_value()`.

The implementor of this trait is free to choose on what cases any of those closures are implemented.

`fn if_else3<Res>(    self,     if_value: impl FnOnce() -> Res,     else_if: (impl FnOnce() -> Self, impl FnOnce() -> Res),     else_else_if: (impl FnOnce() -> Self, impl FnOnce() -> Res),     else_value: impl FnOnce() -> Res) -> Res where    Res: SimdValue<SimdBool = Self>, `

Merges the value of `if_value()` and `else_if.1()` and `else_else_if.1()` and `else_value()` depending on the lanes of `self` and `else_if.0()` and `else_else_if.0()`.

• For each lane of `self` containing `1`, the result will contain the corresponding lane of `if_value()`.
• For each lane of `self` containing `0` but with a corresponding lane of `else_if.0()` containing `1`, the result will contain the corresponding lane of `else_if.1()`.
• For each lane of `self` containing `0` and `else_if.0()` containing `0` and `else_else_if.0()` containing `1`, the result will contain the corresponding lane of `else_else_if.1()`.
• Other lanes will contain the corresponding lane of `else_value()`.

The implementor of this trait is free to choose on what cases any of those closures are implemented.