std::simd::ptr

Trait SimdConstPtr

Source
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;
}
🔬This is a nightly-only experimental API. (portable_simd #86656)
Expand description

Operations on SIMD vectors of constant pointers.

Required Associated Types§

Source

type Usize

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

Vector of usize with the same number of elements.

Source

type Isize

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

Vector of isize with the same number of elements.

Source

type CastPtr<T>

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

Vector of const pointers with the same number of elements.

Source

type MutPtr

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

Vector of mutable pointers to the same type.

Source

type Mask

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

Mask type used for manipulating this SIMD vector type.

Required Methods§

Source

fn is_null(self) -> Self::Mask

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

Returns true for each element that is null.

Source

fn cast<T>(self) -> Self::CastPtr<T>

🔬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

fn cast_mut(self) -> Self::MutPtr

🔬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

fn addr(self) -> Self::Usize

🔬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

fn with_addr(self, addr: Self::Usize) -> Self

🔬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

fn expose_provenance(self) -> Self::Usize

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

Exposes the “provenance” part of the pointer for future use in Self::with_exposed_provenance and returns the “address” portion.

Source

fn with_exposed_provenance(addr: Self::Usize) -> Self

🔬This is a nightly-only experimental API. (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.

Source

fn wrapping_offset(self, offset: Self::Isize) -> Self

🔬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

fn wrapping_add(self, count: Self::Usize) -> Self

🔬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

fn wrapping_sub(self, count: Self::Usize) -> Self

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

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.

Implementors§