Struct ViewData

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

Storage for an immutable tensor view.

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

Implementations§

Source§

impl<'a, T> ViewData<'a, T>

Source

pub unsafe fn get(&self, offset: usize) -> Option<&'a T>

Variant of Storage::get which preserves lifetimes.

§Safety

See Storage::get.

Source

pub unsafe fn get_unchecked(&self, offset: usize) -> &'a T

Variant of Storage::get_unchecked which preserves lifetimes.

§Safety

See Storage::get_unchecked.

Source

pub fn slice(&self, range: Range<usize>) -> ViewData<'a, T>

Variant of Storage::slice which preserves lifetimes.

Source

pub fn view(&self) -> ViewData<'a, T>

Variant of Storage::view which preserves lifetimes.

Source

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

Return the contents of the storage as a slice.

§Safety

The caller must ensure that no mutable references exist to any element in the storage.

Trait Implementations§

Source§

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

Source§

type Output = ViewData<'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<T> Clone for ViewData<'_, T>

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

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

Source§

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

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

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

Source§

const MUTABLE: bool = false

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> Copy for ViewData<'_, T>

Source§

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

Source§

impl<T> Sync for ViewData<'_, T>

Auto Trait Implementations§

§

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

§

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

§

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

§

impl<'a, T> UnwindSafe for ViewData<'a, T>
where T: RefUnwindSafe,

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