pub trait SimdMutPtr: Copy + Sealed {
type Usize;
type Isize;
type CastPtr<T>;
type ConstPtr;
type Mask;
// Required methods
fn is_null(self) -> Self::Mask;
fn cast<T>(self) -> Self::CastPtr<T>;
fn cast_const(self) -> Self::ConstPtr;
fn addr(self) -> Self::Usize;
fn with_addr(self, addr: Self::Usize) -> Self;
fn expose_provenance(self) -> Self::Usize;
fn with_exposed_provenance(addr: Self::Usize) -> Self;
fn wrapping_offset(self, offset: Self::Isize) -> Self;
fn wrapping_add(self, count: Self::Usize) -> Self;
fn wrapping_sub(self, count: Self::Usize) -> Self;
}
portable_simd
#86656)Expand description
Operations on SIMD vectors of mutable pointers.
Required Associated Types§
sourcetype Usize
🔬This is a nightly-only experimental API. (portable_simd
#86656)
type Usize
portable_simd
#86656)Vector of usize
with the same number of elements.
sourcetype Isize
🔬This is a nightly-only experimental API. (portable_simd
#86656)
type Isize
portable_simd
#86656)Vector of isize
with the same number of elements.
sourcetype CastPtr<T>
🔬This is a nightly-only experimental API. (portable_simd
#86656)
type CastPtr<T>
portable_simd
#86656)Vector of const pointers with the same number of elements.
Required Methods§
sourcefn is_null(self) -> Self::Mask
🔬This is a nightly-only experimental API. (portable_simd
#86656)
fn is_null(self) -> Self::Mask
portable_simd
#86656)Returns true
for each element that is null.
sourcefn cast<T>(self) -> Self::CastPtr<T>
🔬This is a nightly-only experimental API. (portable_simd
#86656)
fn cast<T>(self) -> Self::CastPtr<T>
portable_simd
#86656)Casts to a pointer of another type.
Equivalent to calling pointer::cast
on each element.
sourcefn cast_const(self) -> Self::ConstPtr
🔬This is a nightly-only experimental API. (portable_simd
#86656)
fn cast_const(self) -> Self::ConstPtr
portable_simd
#86656)Changes constness without changing the type.
Equivalent to calling pointer::cast_const
on each element.
sourcefn addr(self) -> Self::Usize
🔬This is a nightly-only experimental API. (portable_simd
#86656)
fn addr(self) -> Self::Usize
portable_simd
#86656)Gets the “address” portion of the pointer.
This method discards pointer semantic metadata, so the result cannot be directly cast into a valid pointer.
Equivalent to calling pointer::addr
on each element.
sourcefn with_addr(self, addr: Self::Usize) -> Self
🔬This is a nightly-only experimental API. (portable_simd
#86656)
fn with_addr(self, addr: Self::Usize) -> Self
portable_simd
#86656)Creates a new pointer with the given address.
This performs the same operation as a cast, but copies the address-space and
provenance of self
to the new pointer.
Equivalent to calling pointer::with_addr
on each element.
sourcefn expose_provenance(self) -> Self::Usize
🔬This is a nightly-only experimental API. (portable_simd
#86656)
fn expose_provenance(self) -> Self::Usize
portable_simd
#86656)Exposes the “provenance” part of the pointer for future use in
Self::with_exposed_provenance
and returns the “address” portion.
sourcefn with_exposed_provenance(addr: Self::Usize) -> Self
🔬This is a nightly-only experimental API. (portable_simd
#86656)
fn with_exposed_provenance(addr: Self::Usize) -> Self
portable_simd
#86656)Convert an address back to a pointer, picking up a previously “exposed” provenance.
Equivalent to calling core::ptr::with_exposed_provenance_mut
on each element.
sourcefn wrapping_offset(self, offset: Self::Isize) -> Self
🔬This is a nightly-only experimental API. (portable_simd
#86656)
fn wrapping_offset(self, offset: Self::Isize) -> Self
portable_simd
#86656)Calculates the offset from a pointer using wrapping arithmetic.
Equivalent to calling pointer::wrapping_offset
on each element.
sourcefn wrapping_add(self, count: Self::Usize) -> Self
🔬This is a nightly-only experimental API. (portable_simd
#86656)
fn wrapping_add(self, count: Self::Usize) -> Self
portable_simd
#86656)Calculates the offset from a pointer using wrapping arithmetic.
Equivalent to calling pointer::wrapping_add
on each element.
sourcefn wrapping_sub(self, count: Self::Usize) -> Self
🔬This is a nightly-only experimental API. (portable_simd
#86656)
fn wrapping_sub(self, count: Self::Usize) -> Self
portable_simd
#86656)Calculates the offset from a pointer using wrapping arithmetic.
Equivalent to calling pointer::wrapping_sub
on each element.