Skip to main content

ErasedRawStridedPtr

Struct ErasedRawStridedPtr 

Source
pub struct ErasedRawStridedPtr<'a> { /* private fields */ }
Expand description

Pointer-backed dtype-erased input used by one-shot write entry points.

Unlike ErasedRawStridedRef, this descriptor does not create a shared Rust reference at construction time. That lets the entry point reject an input/output overlap before forming references to either side.

Implementations§

Source§

impl<'a> ErasedRawStridedPtr<'a>

Source

pub unsafe fn from_raw_parts( dtype: KernelDType, data: NonNull<u8>, byte_len: usize, dims: &'a [usize], strides: &'a [isize], offset: isize, ) -> Result<ErasedRawStridedPtr<'a>, StridedError>

Create a pointer-backed descriptor from erased storage.

§Safety

data must point into an allocation whose alignment is suitable for dtype, independently of the observed address. The allocation must provide byte_len initialized, readable bytes with valid provenance for 'a, and remain alive for 'a. For bool, the bytes may contain invalid values temporarily. They must not be read or used to form a typed reference until a caller has rejected overlap and Self::try_as_ref_after_no_overlap has validated the complete extent. The allocation may overlap a destination. The original owner may perform synchronized sequential mutation through the same-provenance raw pointer before conversion. No concurrent mutation or conflicting access is permitted during overlap checking, conversion, or consumer access.

Source

pub fn from_ref(input: &ErasedRawStridedRef<'a>) -> ErasedRawStridedPtr<'a>

Borrow a safe erased input as a pointer descriptor.

Source

pub unsafe fn try_as_ref_after_no_overlap( &self, ) -> Result<ErasedRawStridedRef<'_>, StridedError>

Convert this pointer to an initialized descriptor after overlap checks.

§Safety

The caller must have proved that no mutable allocation overlaps this pointer’s complete byte extent. The allocation contract from Self::from_raw_parts must still hold. No mutation or other conflicting access may occur during this conversion or for the duration of the returned descriptor’s consumer access. Bool bytes are validated here, immediately before typed access.

Source

pub fn dtype(&self) -> KernelDType

Source

pub fn overlaps_mut( &self, dest: &ErasedRawStridedMut<'_>, ) -> Result<bool, StridedError>

Check overlap with initialized mutable storage without reading it.

Source

pub fn overlaps_uninit_mut( &self, dest: &ErasedRawStridedUninitMut<'_>, ) -> Result<bool, StridedError>

Check overlap with uninitialized mutable storage without reading it.

Source

pub fn dims(&self) -> &'a [usize]

Source

pub fn strides(&self) -> &'a [isize]

Source

pub fn offset(&self) -> isize

Trait Implementations§

Source§

impl<'a> Clone for ErasedRawStridedPtr<'a>

Source§

fn clone(&self) -> ErasedRawStridedPtr<'a>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Copy for ErasedRawStridedPtr<'a>

Source§

impl<'a> Debug for ErasedRawStridedPtr<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> MaybeSend for T

Source§

impl<T> MaybeSendSync for T

Source§

impl<T> MaybeSync for T

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.