pub trait SimdConstPtr: Copy + Sealed {
type Usize;
type Isize;
type CastPtr<T>;
type MutPtr;
type Mask;
// Required methods
fn is_null(self) -> Self::Mask;
fn cast<T>(self) -> Self::CastPtr<T>;
fn cast_mut(self) -> Self::MutPtr;
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 constant 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_mut(self) -> Self::MutPtr
🔬This is a nightly-only experimental API. (portable_simd
#86656)
fn cast_mut(self) -> Self::MutPtr
portable_simd
#86656)Changes constness without changing the type.
Equivalent to calling pointer::cast_mut
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.
This method semantically discards provenance and
address-space information. To properly restore that information, use Self::with_addr
.
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)Converts an address back to a pointer, picking up a previously “exposed” provenance.
Equivalent to calling core::ptr::with_exposed_provenance
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.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.