Trait feanor_math::vector::VectorView

source ·
pub trait VectorView<T: ?Sized> {
    // Required methods
    fn len(&self) -> usize;
    fn at(&self, i: usize) -> &T;

    // Provided methods
    fn map<U: ?Sized, F: Fn(&T) -> &U>(self, f: F) -> Map<Self, F, T>
       where Self: Sized { ... }
    fn stride(self, stride: usize) -> Stride<T, Self>
       where Self: Sized { ... }
    fn chain<V>(self, rhs: V) -> Chain<Self, V, T>
       where Self: Sized,
             V: VectorView<T> { ... }
    fn as_el_fn<R>(self, ring: R) -> RingElVectorViewFn<R, Self, T>
       where Self: Sized,
             R: RingStore,
             R::Type: RingBase<Element = T>,
             T: Sized { ... }
    fn iter<'a>(&'a self) -> VectorViewIter<'a, Self, T>  { ... }
}
Expand description

A trait for objects that provides read access to a 1-dimensional array of objects.

If the entries are not owned by the object, but e.g. produced on the fly, or just “associated” in a more general sense, the trait vec_fn::VectorFn can be used. Furthermore, for mutable access, use VectorViewMut.

Required Methods§

source

fn len(&self) -> usize

source

fn at(&self, i: usize) -> &T

Provided Methods§

source

fn map<U: ?Sized, F: Fn(&T) -> &U>(self, f: F) -> Map<Self, F, T>
where Self: Sized,

source

fn stride(self, stride: usize) -> Stride<T, Self>
where Self: Sized,

source

fn chain<V>(self, rhs: V) -> Chain<Self, V, T>
where Self: Sized, V: VectorView<T>,

source

fn as_el_fn<R>(self, ring: R) -> RingElVectorViewFn<R, Self, T>
where Self: Sized, R: RingStore, R::Type: RingBase<Element = T>, T: Sized,

source

fn iter<'a>(&'a self) -> VectorViewIter<'a, Self, T>

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl<'a, T: ?Sized, V> VectorView<T> for &'a V
where V: VectorView<T> + ?Sized,

source§

fn len(&self) -> usize

source§

fn at(&self, i: usize) -> &T

source§

impl<'a, T: ?Sized, V> VectorView<T> for &'a mut V
where V: VectorView<T> + ?Sized,

source§

fn len(&self) -> usize

source§

fn at(&self, i: usize) -> &T

source§

impl<T> VectorView<T> for [T]

source§

fn len(&self) -> usize

source§

fn at(&self, i: usize) -> &T

source§

impl<T> VectorView<T> for (T, T)

source§

fn len(&self) -> usize

source§

fn at(&self, i: usize) -> &T

source§

impl<T> VectorView<T> for (T, T, T)

source§

fn len(&self) -> usize

source§

fn at(&self, i: usize) -> &T

source§

impl<T> VectorView<T> for Box<[T]>

source§

fn len(&self) -> usize

source§

fn at(&self, i: usize) -> &T

source§

impl<T> VectorView<T> for Vec<T>

source§

fn len(&self) -> usize

source§

fn at(&self, i: usize) -> &T

source§

impl<T, const N: usize> VectorView<T> for [T; N]

source§

fn len(&self) -> usize

source§

fn at(&self, i: usize) -> &T

Implementors§

source§

impl<'a, V, T> VectorView<T> for Column<'a, V, T>
where V: AsPointerToSlice<T>,

source§

impl<'a, V, T> VectorView<T> for ColumnMut<'a, V, T>
where V: AsPointerToSlice<T>,

source§

impl<C: ZnRingStore, J: IntegerRingStore, M: MemoryProvider<El<C>>> VectorView<C> for ZnBase<C, J, M>

source§

impl<R: RingStore> VectorView<<<R as RingStore>::Type as RingBase>::Element> for SparseVectorMut<R>

source§

impl<T: Sized> VectorView<T> for CachedMemoryData<T>

source§

impl<T: ?Sized, V> VectorView<T> for Stride<T, V>
where V: VectorView<T>,

source§

impl<T: ?Sized, V> VectorView<T> for Subvector<T, V>
where V: VectorView<T>,

source§

impl<V1, V2, T: ?Sized> VectorView<T> for Chain<V1, V2, T>
where V1: VectorView<T>, V2: VectorView<T>,

source§

impl<V, F, G, T: ?Sized, U: ?Sized> VectorView<U> for MapMut<V, F, G, T>
where V: VectorView<T>, F: Fn(&T) -> &U, G: Fn(&mut T) -> &mut U,

source§

impl<V, F, T: ?Sized, U: ?Sized> VectorView<U> for Map<V, F, T>
where V: VectorView<T>, F: Fn(&T) -> &U,