SimdMutPtr in std::simd::ptr - Rust (original) (raw)
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 without_provenance(addr: Self::Usize) -> Self;
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;
}
🔬This is a nightly-only experimental API. (portable_simd
#86656)
Expand description
Operations on SIMD vectors of mutable pointers.
🔬This is a nightly-only experimental API. (portable_simd
#86656)
Vector of usize
with the same number of elements.
🔬This is a nightly-only experimental API. (portable_simd
#86656)
Vector of isize
with the same number of elements.
🔬This is a nightly-only experimental API. (portable_simd
#86656)
Vector of const pointers with the same number of elements.
🔬This is a nightly-only experimental API. (portable_simd
#86656)
Vector of constant pointers to the same type.
🔬This is a nightly-only experimental API. (portable_simd
#86656)
Mask type used for manipulating this SIMD vector type.
🔬This is a nightly-only experimental API. (portable_simd
#86656)
Returns true
for each element that is null.
🔬This is a nightly-only experimental API. (portable_simd
#86656)
Casts to a pointer of another type.
Equivalent to calling pointer::cast on each element.
🔬This is a nightly-only experimental API. (portable_simd
#86656)
Changes constness without changing the type.
Equivalent to calling pointer::cast_const on each element.
🔬This is a nightly-only experimental API. (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.
🔬This is a nightly-only experimental API. (portable_simd
#86656)
Converts an address to a pointer without giving it any provenance.
Without provenance, this pointer is not associated with any actual allocation. Such a no-provenance pointer may be used for zero-sized memory accesses (if suitably aligned), but non-zero-sized memory accesses with a no-provenance pointer are UB. No-provenance pointers are little more than a usize address in disguise.
This is different from Self::with_exposed_provenance, which creates a pointer that picks up a previously exposed provenance.
Equivalent to calling core::ptr::without_provenance on each element.
🔬This is a nightly-only experimental API. (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.
🔬This is a nightly-only experimental API. (portable_simd
#86656)
Exposes the “provenance” part of the pointer for future use inSelf::with_exposed_provenance and returns the “address” portion.
🔬This is a nightly-only experimental API. (portable_simd
#86656)
🔬This is a nightly-only experimental API. (portable_simd
#86656)
Calculates the offset from a pointer using wrapping arithmetic.
Equivalent to calling pointer::wrapping_offset on each element.
🔬This is a nightly-only experimental API. (portable_simd
#86656)
Calculates the offset from a pointer using wrapping arithmetic.
Equivalent to calling pointer::wrapping_add on each element.
🔬This is a nightly-only experimental API. (portable_simd
#86656)
Calculates the offset from a pointer using wrapping arithmetic.
Equivalent to calling pointer::wrapping_sub on each element.
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.