SimdConstPtr in std::simd::prelude - Rust (original) (raw)

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 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 constant pointers.

Source

🔬This is a nightly-only experimental API. (portable_simd #86656)

Vector of usize with the same number of elements.

Source

🔬This is a nightly-only experimental API. (portable_simd #86656)

Vector of isize with the same number of elements.

Source

🔬This is a nightly-only experimental API. (portable_simd #86656)

Vector of const pointers with the same number of elements.

Source

🔬This is a nightly-only experimental API. (portable_simd #86656)

Vector of mutable pointers to the same type.

Source

🔬This is a nightly-only experimental API. (portable_simd #86656)

Mask type used for manipulating this SIMD vector type.

Source

🔬This is a nightly-only experimental API. (portable_simd #86656)

Returns true for each element that is null.

Source

🔬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.

Source

🔬This is a nightly-only experimental API. (portable_simd #86656)

Changes constness without changing the type.

Equivalent to calling pointer::cast_mut on each element.

Source

🔬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.

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.

Source

🔬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.

Source

🔬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.

Source

🔬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.

Source

🔬This is a nightly-only experimental API. (portable_simd #86656)

Source

🔬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.

Source

🔬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.

Source

🔬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.