pub trait TensorTrait<T>: Send + Sync{
Show 15 methods
// Required methods
fn new(shape: &[usize], name: Option<&str>) -> Result<Self>
where Self: Sized;
fn from_fd(fd: OwnedFd, shape: &[usize], name: Option<&str>) -> Result<Self>
where Self: Sized;
fn clone_fd(&self) -> Result<OwnedFd>;
fn memory(&self) -> TensorMemory;
fn name(&self) -> String;
fn shape(&self) -> &[usize];
fn reshape(&mut self, shape: &[usize]) -> Result<()>;
fn map(&self) -> Result<TensorMap<T>>;
fn buffer_identity(&self) -> &BufferIdentity;
// Provided methods
fn len(&self) -> usize { ... }
fn is_empty(&self) -> bool { ... }
fn size(&self) -> usize { ... }
fn capacity_bytes(&self) -> usize { ... }
fn set_logical_shape(&mut self, shape: &[usize]) -> Result<()> { ... }
fn view(&self, offset_bytes: usize, shape: &[usize]) -> Result<Self>
where Self: Sized { ... }
}Required Methods§
Sourcefn new(shape: &[usize], name: Option<&str>) -> Result<Self>where
Self: Sized,
fn new(shape: &[usize], name: Option<&str>) -> Result<Self>where
Self: Sized,
Create a new tensor with the given shape and optional name. If no name is given, a random name will be generated.
Sourcefn from_fd(fd: OwnedFd, shape: &[usize], name: Option<&str>) -> Result<Self>where
Self: Sized,
fn from_fd(fd: OwnedFd, shape: &[usize], name: Option<&str>) -> Result<Self>where
Self: Sized,
Create a new tensor using the given file descriptor, shape, and optional name. If no name is given, a random name will be generated.
On Linux: Inspects the fd to determine DMA vs SHM based on device major/minor. On other Unix (macOS): Always creates SHM tensor.
Sourcefn memory(&self) -> TensorMemory
fn memory(&self) -> TensorMemory
Get the memory type of this tensor.
Sourcefn reshape(&mut self, shape: &[usize]) -> Result<()>
fn reshape(&mut self, shape: &[usize]) -> Result<()>
Reshape this tensor to the given shape. The total number of elements must remain the same.
Sourcefn map(&self) -> Result<TensorMap<T>>
fn map(&self) -> Result<TensorMap<T>>
Map the tensor into memory and return a TensorMap for accessing the data.
Sourcefn buffer_identity(&self) -> &BufferIdentity
fn buffer_identity(&self) -> &BufferIdentity
Get the buffer identity for cache keying and liveness tracking.
Provided Methods§
Sourcefn capacity_bytes(&self) -> usize
fn capacity_bytes(&self) -> usize
Bytes of the underlying allocation (>= the current logical size()).
Defaults to the logical size for storages without spare capacity.
Sourcefn set_logical_shape(&mut self, shape: &[usize]) -> Result<()>
fn set_logical_shape(&mut self, shape: &[usize]) -> Result<()>
Set the logical shape to any shape whose byte size fits the allocation
capacity, without the equal-size constraint of reshape.
Sourcefn view(&self, offset_bytes: usize, shape: &[usize]) -> Result<Self>where
Self: Sized,
fn view(&self, offset_bytes: usize, shape: &[usize]) -> Result<Self>where
Self: Sized,
Create a zero-copy sub-region view of this backing that shares the
underlying allocation and BufferIdentity.
The window is [offset_bytes, offset_bytes + shape.product() * size_of::<T>()) measured from this tensor’s own logical start, so a
sub-view of a sub-view composes by adding offsets. Sharing the parent’s
identity is the contract that lets identity-keyed caches (e.g. the GL
EGLImage import cache) treat offset-distinct windows as one buffer rather
than unrelated allocations — view must never mint a fresh identity.
Defaults to Error::NotImplemented; every backend that supports
sub-views overrides it (Mem, Shm, Linux DMA, macOS IOSurface, Pbo).
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".