Skip to main content

Tensor

Struct Tensor 

Source
pub struct Tensor { /* private fields */ }
Expand description

The uniform tensor value: an n-dimensional array of scalar number cells.

A tensor is row-major (last axis varies fastest) and homogeneous: every cell shares the dtype number domain. An empty shape denotes a rank-0 scalar holding a single cell. Tensors are the value backing the numbers/tensor domain and are constructed through build_tensor_value rather than parsed from literals.

Implementations§

Source§

impl Tensor

Source

pub fn new_checked( cx: &mut Cx, shape: Vec<usize>, dtype: Symbol, data: Vec<Value>, ) -> Result<Self>

Builds a tensor after checking shape, scalar-cell, and promotion invariants against the loaded number-domain registry.

Source

pub fn new_exact( shape: Vec<usize>, dtype: Symbol, data: Vec<Value>, ) -> Result<Self>

Builds a tensor whose cells already exactly match dtype.

Specialized tensor backends use this when converting packed storage into uniform tensor cells without needing a loaded registry. It is stricter than Tensor::new_checked: every cell must report exactly dtype.

Source

pub fn from_storage( shape: Vec<usize>, dtype: Symbol, storage: Arc<dyn TensorStorage>, ) -> Result<Self>

Builds a canonical tensor around externally supplied storage.

This validates shape, dtype, and logical length without materializing resident storage. The storage implementation is responsible for returning scalar values consistent with its declared dtype.

Source

pub fn shape(&self) -> &[usize]

The tensor shape, outermost axis first. Empty means a rank-0 scalar.

Source

pub fn dtype(&self) -> &Symbol

The shared scalar number domain accepted by every tensor cell.

Source

pub fn location(&self) -> TensorLocation

The current host or resident storage location.

Source

pub fn storage(&self) -> &Arc<dyn TensorStorage>

Borrows the open storage implementation.

Typed adapters can safely downcast through TensorStorage::as_any, while execution providers can preserve storage identity by cloning this Arc.

Source

pub fn len(&self) -> usize

The logical row-major cell count.

Source

pub fn is_empty(&self) -> bool

Whether this tensor has no logical cells.

Source

pub fn cell(&self, index: usize) -> Result<Value>

Observes one row-major scalar cell.

Source

pub fn materialize(&self) -> Result<Arc<dyn TensorStorage>>

Materializes storage into a checked host-observable form.

Source

pub fn cells(&self) -> Result<Arc<[Value]>>

Observes all row-major scalar cells.

Boxed host storage returns its shared cell slice directly. Other host layouts are read through the open storage contract after one checked materialization.

Source

pub fn rank(&self) -> usize

The number of axes, i.e. the length of shape. Zero for a scalar.

Source

pub fn flat_offset(shape: &[usize], indices: &[usize]) -> Result<usize>

Computes the row-major flat offset into storage for a multi-dimensional indices coordinate against shape.

Returns an error if the index rank does not match shape or any component is out of bounds.

§Examples
use sim_lib_numbers_tensor::Tensor;

// Row-major 2x3 tensor: element (1, 2) is at flat offset 5.
assert_eq!(Tensor::flat_offset(&[2, 3], &[1, 2]).unwrap(), 5);
assert_eq!(Tensor::flat_offset(&[2, 3], &[0, 0]).unwrap(), 0);
// Out-of-bounds and rank-mismatched indices are rejected.
assert!(Tensor::flat_offset(&[2, 3], &[2, 0]).is_err());
assert!(Tensor::flat_offset(&[2, 3], &[0]).is_err());
Source

pub fn coordinates(shape: &[usize]) -> Vec<Vec<usize>>

Enumerates every multi-dimensional coordinate of shape in row-major order. An empty shape yields a single empty coordinate (the scalar cell).

Trait Implementations§

Source§

impl Citizen for Tensor

Source§

fn citizen_symbol() -> Symbol

The citizen’s namespace/name class symbol.
Source§

fn citizen_version() -> u32

The citizen’s encoding version.
Source§

fn citizen_arity() -> usize

Number of constructor fields (excluding the version argument).
Source§

fn citizen_fields() -> &'static [&'static str]

The citizen’s field names, in constructor order.
Source§

impl Clone for Tensor

Source§

fn clone(&self) -> Tensor

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl NumberValue for Tensor

Source§

fn number_domain(&self, _cx: &mut Cx) -> Result<Symbol>

The number domain this value reports membership in.
Source§

fn number_literal(&self, _cx: &mut Cx) -> Result<Option<NumberLiteral>, Error>

Canonical literal form, or Ok(None) when not representable.
Source§

impl Object for Tensor

Source§

fn display(&self, cx: &mut Cx) -> Result<String>

Render the object as a human-readable display string.
Source§

fn as_any(&self) -> &dyn Any

Expose the object for Rust downcasting.
Source§

fn header(&self) -> &ObjectHeader

Identity and trust header for the object; defaults to the shared anonymous header.
Source§

fn op(&self, _key: &OpKey) -> Option<&dyn Op>

Resolve the operation registered under key, if any.
Source§

fn claims( &self, _cx: &mut Cx, _pattern: &ClaimPattern, _sink: &mut dyn ClaimSink, ) -> Result<(), Error>

Emit the object’s claims matching pattern into sink.
Source§

fn snapshot(&self, _cx: &mut Cx) -> Result<Option<Datum>, Error>

Optional content-addressable snapshot of the object’s state.
Source§

impl ObjectCompat for Tensor

Source§

fn class(&self, cx: &mut Cx) -> Result<ClassRef>

Class object this value belongs to; defaults to nil.
Source§

fn as_expr(&self, cx: &mut Cx) -> Result<Expr>

Expression form of the object; defaults to an opaque extension node.
Source§

fn as_table(&self, cx: &mut Cx) -> Result<Value>

Project the object into a table value; the default exposes its display.
Source§

fn as_number_value(&self) -> Option<&dyn NumberValue>

Number-value view, if the object is a domain number.
Source§

fn as_object_encoder(&self) -> Option<&dyn ObjectEncode>

Object-encoder view, if the object encodes other objects.
Source§

fn as_callable(&self) -> Option<&dyn Callable>

Callable view, if the object can be invoked.
Source§

fn as_class(&self) -> Option<&dyn Class>

Class view, if the object is a class.
Source§

fn as_shape(&self) -> Option<&dyn Shape>

Shape view, if the object is a shape.
Source§

fn as_read_constructor(&self) -> Option<&dyn ReadConstructor>

Read-constructor view, if the object decodes data forms.
Source§

fn as_number_domain(&self) -> Option<&(dyn NumberDomain + 'static)>

Number-domain view, if the object is a number domain.
Source§

fn as_eval_fabric(&self) -> Option<&dyn EvalFabric>

Eval-fabric view, if the object is a distributed eval surface.
Source§

fn as_stream(&self) -> Option<&dyn Stream>

Stream view, if the object is a stream.
Source§

fn as_sequence(&self) -> Option<&dyn Sequence>

Sequence view, if the object is a sequence.
Source§

fn as_thunk(&self) -> Option<&dyn Thunk>

Thunk view, if the object is a deferred computation.
Source§

fn as_list(&self) -> Option<&(dyn ListValue + 'static)>

List view, if the object is a list value.
Source§

fn as_table_impl(&self) -> Option<&(dyn Table + 'static)>

Table-implementation view, if the object is a table.
Source§

fn as_dir(&self) -> Option<&(dyn Dir + 'static)>

Directory view, if the object is a directory.
Source§

fn truth(&self, _cx: &mut Cx) -> Result<bool, Error>

Truthiness of the object; defaults to true.
Source§

fn publish_shape_satisfaction_claims( &self, _cx: &mut Cx, _shape: &Ref, ) -> Result<bool, Error>

Publish claims asserting that the object satisfies shape; returns whether any were published.
Source§

impl ObjectEncode for Tensor

Source§

fn object_encoding(&self, cx: &mut Cx) -> Result<ObjectEncoding>

Returns the ObjectEncoding this object should be rendered as.

Auto Trait Implementations§

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> RuntimeObject for T
where T: Object + ObjectCompat + Any + Send + Sync,

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.