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
)Expand description
Operations on SIMD vectors of constant pointers.
Required Associated Types§
sourcetype Usize
🔬This is a nightly-only experimental API. (portable_simd
)
type Usize
portable_simd
)Vector of usize
with the same number of elements.
sourcetype Isize
🔬This is a nightly-only experimental API. (portable_simd
)
type Isize
portable_simd
)Vector of isize
with the same number of elements.
sourcetype CastPtr<T>
🔬This is a nightly-only experimental API. (portable_simd
)
type CastPtr<T>
portable_simd
)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
)
fn is_null(self) -> Self::Mask
portable_simd
)Returns true
for each element that is null.
sourcefn cast<T>(self) -> Self::CastPtr<T>
🔬This is a nightly-only experimental API. (portable_simd
)
fn cast<T>(self) -> Self::CastPtr<T>
portable_simd
)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
)
fn cast_mut(self) -> Self::MutPtr
portable_simd
)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
)
fn addr(self) -> Self::Usize
portable_simd
)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
)
fn with_addr(self, addr: Self::Usize) -> Self
portable_simd
)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
)
fn expose_provenance(self) -> Self::Usize
portable_simd
)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
)
fn with_exposed_provenance(addr: Self::Usize) -> Self
portable_simd
)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
)
fn wrapping_offset(self, offset: Self::Isize) -> Self
portable_simd
)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
)
fn wrapping_add(self, count: Self::Usize) -> Self
portable_simd
)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
)
fn wrapping_sub(self, count: Self::Usize) -> Self
portable_simd
)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.