Struct ViewMutData

Source
pub struct ViewMutData<'a, T> { /* private fields */ }
Expand description

Storage for a mutable tensor view.

This has the same representation in memory as a mutable slice: a pointer and a length. Unlike a slice it allows for other storage objects to reference memory ranges that overlap with this one. It is up to APIs built on top of this to ensure uniqueness of mutable references.

Implementations§

Source§

impl<'a, T> ViewMutData<'a, T>

Source

pub unsafe fn to_slice_mut(self) -> &'a mut [T]

Variant of StorageMut::as_slice_mut which preserves the underlying lifetime in the result.

§Safety

See StorageMut::as_slice_mut.

Source

pub fn split_mut( self, left: Range<usize>, right: Range<usize>, ) -> (ViewMutData<'a, T>, ViewMutData<'a, T>)

Split the storage into two sub-views.

Unlike splitting a slice, this does not ensure that the two halves do not overlap, only that the “left” and “right” ranges are valid.

Trait Implementations§

Source§

impl<'a, T> AssumeInit for ViewMutData<'a, MaybeUninit<T>>

Source§

type Output = ViewMutData<'a, T>

The type of the initialized storage.
Source§

unsafe fn assume_init(self) -> Self::Output

Cast self to a collection of initialized values. Read more
Source§

impl<'a, T: Debug> Debug for ViewMutData<'a, T>

Source§

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

Formats the value using the given formatter. Read more
Source§

impl<T> Storage for ViewMutData<'_, T>

Source§

const MUTABLE: bool = true

True if this storage allows mutable access via StorageMut. This is used to determine if a layout can be safely used with a storage. Layouts where multiple indices map to the same offset must not be used with mutable storage.
Source§

type Elem = T

The element type.
Source§

fn len(&self) -> usize

Return the number of elements in the storage.
Source§

fn as_ptr(&self) -> *const T

Return a pointer to the first element in the storage.
Source§

fn is_empty(&self) -> bool

Return true if the storage contains no elements.
Source§

unsafe fn get(&self, offset: usize) -> Option<&Self::Elem>

Return the element at a given offset, or None if offset >= self.len(). Read more
Source§

unsafe fn get_unchecked(&self, offset: usize) -> &Self::Elem

Return a reference to the element at offset. Read more
Source§

fn slice(&self, range: Range<usize>) -> ViewData<'_, Self::Elem>

Return a view of a sub-region of the storage. Read more
Source§

fn view(&self) -> ViewData<'_, Self::Elem>

Return an immutable view of this storage.
Source§

unsafe fn as_slice(&self) -> &[Self::Elem]

Return the contents of the storage as a slice. Read more
Source§

impl<T> StorageMut for ViewMutData<'_, T>

Source§

fn as_mut_ptr(&mut self) -> *mut T

Return a mutable pointer to the first element in storage.
Source§

unsafe fn get_mut(&mut self, offset: usize) -> Option<&mut Self::Elem>

Mutable version of Storage::get. Read more
Source§

unsafe fn get_unchecked_mut(&mut self, offset: usize) -> &mut Self::Elem

Mutable version of Storage::get_unchecked. Read more
Source§

fn slice_mut(&mut self, range: Range<usize>) -> ViewMutData<'_, Self::Elem>

Return a slice of this storage.
Source§

fn view_mut(&mut self) -> ViewMutData<'_, Self::Elem>

Return a mutable view of this storage.
Source§

unsafe fn as_slice_mut(&mut self) -> &mut [Self::Elem]

Return the stored elements as a mutable slice. Read more
Source§

impl<T> Send for ViewMutData<'_, T>

Auto Trait Implementations§

§

impl<'a, T> Freeze for ViewMutData<'a, T>

§

impl<'a, T> RefUnwindSafe for ViewMutData<'a, T>
where T: RefUnwindSafe,

§

impl<'a, T> !Sync for ViewMutData<'a, T>

§

impl<'a, T> Unpin for ViewMutData<'a, T>

§

impl<'a, T> !UnwindSafe for ViewMutData<'a, T>

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> 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> IntoStorage for T
where T: Storage,

Source§

type Output = T

Source§

fn into_storage(self) -> T

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. 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.