pub struct ErasedRawStridedRef<'a> { /* private fields */ }Expand description
Borrowed dtype-erased raw strided input layout.
dims, strides, and offset are expressed in dtype elements, not bytes.
Implementations§
Source§impl<'a> ErasedRawStridedRef<'a>
impl<'a> ErasedRawStridedRef<'a>
Sourcepub fn from_slice<T: KernelStorageElement>(
data: &'a [T],
dims: &'a [usize],
strides: &'a [isize],
offset: isize,
) -> Result<Self>
pub fn from_slice<T: KernelStorageElement>( data: &'a [T], dims: &'a [usize], strides: &'a [isize], offset: isize, ) -> Result<Self>
Create an erased input descriptor from typed, initialized storage.
§Errors
Returns StridedError::StrideLengthMismatch when dims and
strides have different lengths, and
StridedError::OffsetOverflow when a reachable offset is not
representable: dim - 1 of a non-unit extent does not fit isize, a
stride times that last index or the accumulated offsets overflow
isize or go negative, or the highest reachable offset is not below
the buffer length. A layout with a zero extent skips this check. The
byte-length and alignment checks
cannot fail for a typed &[T].
Sourcepub unsafe fn from_raw_parts(
dtype: KernelDType,
data: NonNull<u8>,
byte_len: usize,
dims: &'a [usize],
strides: &'a [isize],
offset: isize,
) -> Result<Self>
pub unsafe fn from_raw_parts( dtype: KernelDType, data: NonNull<u8>, byte_len: usize, dims: &'a [usize], strides: &'a [isize], offset: isize, ) -> Result<Self>
Construct from erased storage.
§Safety
data must be the start of an allocation aligned for dtype; the
allocation must contain byte_len initialized, readable bytes for
'a, and every byte extent must represent valid values for dtype.
The allocation and metadata must outlive 'a; no mutable alias may
exist while this descriptor is used. Alignment is an allocation
property and must not be inferred from the observed address alone.
§Errors
Returns StridedError::ByteLengthMismatch when byte_len is not
a whole number of dtype elements, and
StridedError::DataAlignmentMismatch when a non-empty data is
not aligned for dtype. Returns
StridedError::StrideLengthMismatch when dims and strides
have different lengths, and StridedError::OffsetOverflow when
a reachable offset is not representable: dim - 1 of a non-unit
extent does not fit isize, a stride times that last index or the
accumulated offsets overflow isize or go negative, or the highest
reachable offset is not below the storage length. A layout with a zero
extent skips this check.
Bool bytes are the caller’s responsibility here, per the safety
contract.
Sourcepub fn data_as<T: KernelStorageElement>(&self) -> Result<&[T]>
pub fn data_as<T: KernelStorageElement>(&self) -> Result<&[T]>
Borrow the initialized storage as its concrete scalar type.
§Errors
Returns StridedError::DTypeMismatch when T is not the
descriptor’s dtype.