Skip to main content

PartiallyInteroperable

Trait PartiallyInteroperable 

Source
pub trait PartiallyInteroperable<A, B>:
    GenericVector<Mask: CastMask<A::Mask> + CastMask<B::Mask>>
    + CastVector<Self>
    + CastVector<A>
    + CastVector<B>
where A: CastVector<Self> + GenericVector<Lanes = Self::Lanes, Mask: CastMask<Self::Mask> + CastMask<B::Mask>>, B: CastVector<Self> + GenericVector<Lanes = Self::Lanes, Mask: CastMask<Self::Mask> + CastMask<A::Mask>>,
{ }
Expand description

MaskInteroperable plus bidirectional numeric (CastVector) conversion among Self, A, and B.

In addition to interoperable masks, this guarantees Self, A, and B can all be numerically cast into one another in either direction (A/B into Self and Self into A/B), so generic code can freely move operands of differing element types into whichever common type it needs before combining them. It does not require bit-level reinterpretation; for that see FullyInteroperable.

Blanket-implemented for every triple satisfying the bounds.

Dyn Compatibility§

This trait is not dyn compatible.

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

Implementors§

Source§

impl<V, A, B> PartiallyInteroperable<A, B> for V
where V: GenericVector<Mask: CastMask<A::Mask> + CastMask<B::Mask>> + CastVector<V> + CastVector<A> + CastVector<B>, A: CastVector<V> + GenericVector<Lanes = V::Lanes, Mask: CastMask<V::Mask> + CastMask<B::Mask>>, B: CastVector<V> + GenericVector<Lanes = V::Lanes, Mask: CastMask<V::Mask> + CastMask<A::Mask>>,