Trait sprs::DenseVector

source ·
pub trait DenseVector: Sealed {
    type Owned;
    type Scalar;

    // Required methods
    fn dim(&self) -> usize;
    fn index(&self, idx: usize) -> &Self::Scalar;
    fn zeros(dim: usize) -> Self::Owned;
    fn to_owned(&self) -> Self::Owned;
}
Expand description

A trait for types representing dense vectors, useful for expressing algorithms such as sparse-dense dot product, or linear solves.

This trait is sealed, and cannot be implemented outside of the sprs crate.

Required Associated Types§

Required Methods§

source

fn dim(&self) -> usize

The dimension of the vector

source

fn index(&self, idx: usize) -> &Self::Scalar

Random access to an element in the vector.

Panics

If the index is out of bounds

source

fn zeros(dim: usize) -> Self::Owned

Create an owned version of this dense vector type, filled with zeros

source

fn to_owned(&self) -> Self::Owned

Copies this vector into an owned version

Implementations on Foreign Types§

source§

impl<N: Zero + Clone> DenseVector for [N]

§

type Owned = Vec<N, Global>

§

type Scalar = N

source§

fn dim(&self) -> usize

source§

fn index(&self, idx: usize) -> &N

source§

fn zeros(dim: usize) -> Self::Owned

source§

fn to_owned(&self) -> Self::Owned

source§

impl<'a, N, S> DenseVector for &'a mut ArrayBase<S, Ix1>where S: Data<Elem = N>, N: 'a + Zero + Clone,

§

type Owned = ArrayBase<OwnedRepr<N>, Dim<[usize; 1]>>

§

type Scalar = N

source§

fn dim(&self) -> usize

source§

fn index(&self, idx: usize) -> &N

source§

fn zeros(dim: usize) -> Self::Owned

source§

fn to_owned(&self) -> Self::Owned

source§

impl<N, S> DenseVector for ArrayBase<S, Ix1>where S: Data<Elem = N>, N: Zero + Clone,

§

type Owned = ArrayBase<OwnedRepr<N>, Dim<[usize; 1]>>

§

type Scalar = N

source§

fn dim(&self) -> usize

source§

fn index(&self, idx: usize) -> &N

source§

fn zeros(dim: usize) -> Self::Owned

source§

fn to_owned(&self) -> Self::Owned

source§

impl<'a, N: 'a + Zero + Clone> DenseVector for &'a mut Vec<N>

§

type Owned = Vec<N, Global>

§

type Scalar = N

source§

fn dim(&self) -> usize

source§

fn index(&self, idx: usize) -> &N

source§

fn zeros(dim: usize) -> Self::Owned

source§

fn to_owned(&self) -> Self::Owned

source§

impl<'a, N: 'a + Zero + Clone> DenseVector for &'a Vec<N>

§

type Owned = Vec<N, Global>

§

type Scalar = N

source§

fn dim(&self) -> usize

source§

fn index(&self, idx: usize) -> &N

source§

fn zeros(dim: usize) -> Self::Owned

source§

fn to_owned(&self) -> Self::Owned

source§

impl<'a, N: 'a + Zero + Clone> DenseVector for &'a [N]

§

type Owned = Vec<N, Global>

§

type Scalar = N

source§

fn dim(&self) -> usize

source§

fn index(&self, idx: usize) -> &N

source§

fn zeros(dim: usize) -> Self::Owned

source§

fn to_owned(&self) -> Self::Owned

source§

impl<N: Zero + Clone> DenseVector for Vec<N>

§

type Owned = Vec<N, Global>

§

type Scalar = N

source§

fn dim(&self) -> usize

source§

fn index(&self, idx: usize) -> &N

source§

fn zeros(dim: usize) -> Self::Owned

source§

fn to_owned(&self) -> Self::Owned

source§

impl<'a, N: 'a + Zero + Clone> DenseVector for &'a mut [N]

§

type Owned = Vec<N, Global>

§

type Scalar = N

source§

fn dim(&self) -> usize

source§

fn index(&self, idx: usize) -> &N

source§

fn zeros(dim: usize) -> Self::Owned

source§

fn to_owned(&self) -> Self::Owned

source§

impl<'a, N, S> DenseVector for &'a ArrayBase<S, Ix1>where S: Data<Elem = N>, N: 'a + Zero + Clone,

§

type Owned = ArrayBase<OwnedRepr<N>, Dim<[usize; 1]>>

§

type Scalar = N

source§

fn dim(&self) -> usize

source§

fn index(&self, idx: usize) -> &N

source§

fn zeros(dim: usize) -> Self::Owned

source§

fn to_owned(&self) -> Self::Owned

Implementors§