Struct CircularArray

Source
pub struct CircularArray<const N: usize, A, T> { /* private fields */ }
Expand description

A circular array of D dimensions holding elements of type T.

Implementations§

Source§

impl<const N: usize, A, T> CircularArray<N, A, T>
where A: AsRef<[T]>,

Source

pub fn new(shape: [usize; N], array: A) -> CircularArray<N, A, T>

Source

pub fn new_offset( shape: [usize; N], array: A, offset: [usize; N], ) -> CircularArray<N, A, T>

Source

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

Get the shape array.

Source

pub fn offset(&self) -> &[usize; N]

Get the offset array.

Source

pub fn slice_len(&self, axis: usize) -> usize

Get the number of elements for a single slice of the array, for the given axis. Pushing n slices of elements onto an axis requires n * slice_len elements to be passed to the respective method.

Source

pub fn next_offset(&self, axis: usize, n: isize) -> usize

Get the offset value after adding n to the given axis.

Source§

impl<const N: usize, T> CircularArray<N, Vec<T>, T>

Source

pub fn from_iter(shape: [usize; N], iter: impl Iterator<Item = T>) -> Self

Source

pub fn from_iter_offset( shape: [usize; N], iter: impl Iterator<Item = T>, offset: [usize; N], ) -> Self

Source§

impl<const N: usize, T> CircularArray<N, Box<[T]>, T>

Source

pub fn from_iter(shape: [usize; N], iter: impl Iterator<Item = T>) -> Self

Source

pub fn from_iter_offset( shape: [usize; N], iter: impl Iterator<Item = T>, offset: [usize; N], ) -> Self

Trait Implementations§

Source§

impl<'a, const N: usize, A: AsRef<[T]>, T: 'a> CircularArrayIndex<'a, N, T> for CircularArray<N, A, T>

Source§

fn iter(&'a self) -> impl Iterator<Item = &'a T>

Iterate over all elements of the inner array, aligned to the offset.
Source§

fn iter_raw(&'a self) -> impl Iterator<Item = &'a T>

Iterate over all elements of the inner array.
Source§

fn iter_index( &'a self, axis: usize, index: usize, ) -> impl Iterator<Item = &'a T>

Iterate over all elements of index for the given axis aligned to the offset.
Source§

fn iter_range( &'a self, axis: usize, range: Range<usize>, ) -> impl Iterator<Item = &'a T>

Iterate over all elements of the given index range for the given axis aligned to the offset.
Source§

fn iter_range_raw( &'a self, axis: usize, range: Range<usize>, ) -> impl Iterator<Item = &'a T>

Iterate over all elements of the given index range for the given axis.
Source§

fn iter_slice(&'a self, slice: [Range<usize>; N]) -> impl Iterator<Item = &'a T>

Iterate over all elements of the given index slice.
Source§

fn iter_index_raw( &'a self, axis: usize, index: usize, ) -> impl Iterator<Item = &'a T>

Iterate over all elements of index for the given axis.
Source§

fn get(&'a self, index: [usize; N]) -> &'a T

Get a reference to the element at the given index, aligned to the offset.
Source§

fn get_raw(&'a self, index: [usize; N]) -> &'a T

Get a reference to the element at the given index.
Source§

impl<'a, const N: usize, A: AsMut<[T]>, T: 'a> CircularArrayIndexMut<'a, N, T> for CircularArray<N, A, T>

Source§

fn get_mut(&mut self, index: [usize; N]) -> &mut T

Get a mutable reference to the element at the given index, aligned to the offset.
Source§

fn get_mut_raw(&mut self, index: [usize; N]) -> &mut T

Get a mutable reference to the element at the given index.
Source§

impl<'a, const N: usize, A: AsRef<[T]> + AsMut<[T]>, T: Clone> CircularArrayMut<N, T, &'a [T]> for CircularArray<N, A, T>

Source§

fn push_front(&mut self, axis: usize, el: &'a [T])

Push elements to the front of the given axis, taking into account the offsets of all axes. Elements must be an exact multiple of the slice size for the given axis. See CircularArray::slice_len. Read more
Source§

fn push_front_raw(&mut self, axis: usize, el: &'a [T])

Push elements to the front of the given axis, taking into account only the offset of the given axis. Elements must be an exact multiple of the slice size for the given axis. See CircularArray::slice_len. Read more
Source§

fn push_back(&mut self, axis: usize, el: &'a [T])

Push elements to the back of the given axis, taking into account the offsets of all exes. Elements must be an exact multiple of the slice size for the given axis. See CircularArray::slice_len. Read more
Source§

fn push_back_raw(&mut self, axis: usize, el: &'a [T])

Push elements to the back of the given axis, taking into account the offsets of all axes. Elements must be an exact multiple of the slice size for the given axis. See CircularArray::slice_len. Read more
Source§

impl<'a, const N: usize, A: AsRef<[T]>, T: 'a> Index<[usize; N]> for CircularArray<N, A, T>

Source§

type Output = T

The returned type after indexing.
Source§

fn index(&self, index: [usize; N]) -> &Self::Output

Performs the indexing (container[index]) operation. Read more
Source§

impl<'a, const N: usize, A: AsRef<[T]> + AsMut<[T]>, T: 'a> IndexMut<[usize; N]> for CircularArray<N, A, T>

Source§

fn index_mut(&mut self, index: [usize; N]) -> &mut Self::Output

Performs the mutable indexing (container[index]) operation. Read more

Auto Trait Implementations§

§

impl<const N: usize, A, T> Freeze for CircularArray<N, A, T>
where A: Freeze,

§

impl<const N: usize, A, T> RefUnwindSafe for CircularArray<N, A, T>

§

impl<const N: usize, A, T> Send for CircularArray<N, A, T>
where A: Send, T: Send,

§

impl<const N: usize, A, T> Sync for CircularArray<N, A, T>
where A: Sync, T: Sync,

§

impl<const N: usize, A, T> Unpin for CircularArray<N, A, T>
where A: Unpin, T: Unpin,

§

impl<const N: usize, A, T> UnwindSafe for CircularArray<N, A, T>
where A: UnwindSafe, T: UnwindSafe,

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<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, 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.