Storage

Trait Storage 

Source
pub trait Storage<T: Scalar>:
    Clone
    + Send
    + Sync
    + Sized {
    // Required methods
    fn len(&self) -> usize;
    fn get(&self, index: usize) -> T;
    fn set(&mut self, index: usize, value: T);
    fn to_vec(&self) -> Vec<T>;
    fn from_slice(data: &[T]) -> Self;
    fn zeros(len: usize) -> Self;

    // Provided method
    fn is_empty(&self) -> bool { ... }
}
Expand description

Storage trait for tensor data.

Abstracts over different storage backends (CPU memory, GPU memory).

Required Methods§

Source

fn len(&self) -> usize

Number of elements in storage.

Source

fn get(&self, index: usize) -> T

Get element at index (may be slow for GPU).

Source

fn set(&mut self, index: usize, value: T)

Set element at index (may be slow for GPU).

Source

fn to_vec(&self) -> Vec<T>

Copy all data to a Vec (downloads from GPU if needed).

Source

fn from_slice(data: &[T]) -> Self

Create storage from slice.

Source

fn zeros(len: usize) -> Self

Create zero-initialized storage.

Provided Methods§

Source

fn is_empty(&self) -> bool

Check if storage is empty.

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.

Implementations on Foreign Types§

Source§

impl<T: Scalar> Storage<T> for Vec<T>

Source§

fn len(&self) -> usize

Source§

fn get(&self, index: usize) -> T

Source§

fn set(&mut self, index: usize, value: T)

Source§

fn to_vec(&self) -> Vec<T>

Source§

fn from_slice(data: &[T]) -> Self

Source§

fn zeros(len: usize) -> Self

Implementors§