redstone_ml/ndarray/iterator/
iterators.rs

1use crate::dtype::RawDataType;
2use crate::iterator::flat_iterator::FlatIterator;
3use crate::tensor_iterator::NdIterator;
4use crate::NdArray;
5use crate::axis::{AxesType, AxisType};
6use crate::buffer_iterator::BufferIterator;
7
8impl<T: RawDataType> NdArray<'_, T> {
9    pub fn flatiter(&self) -> FlatIterator<T> {
10        FlatIterator::from(self)
11    }
12
13    pub fn flatiter_ptr(&self) -> BufferIterator<T> {
14        BufferIterator::from(self)
15    }
16}
17
18impl<'a, T: RawDataType> NdArray<'a, T> {
19    pub fn iter(&'a self) -> NdIterator<'a, T> {
20        NdIterator::from(self, [0])
21    }
22
23    pub fn iter_along(&'a self, axis: impl AxisType) -> NdIterator<'a, T> {
24        NdIterator::from(self, [axis.as_absolute(self.shape.len())])
25    }
26
27    pub fn nditer(&'a self, axes: impl AxesType) -> NdIterator<'a, T> {
28        NdIterator::from(self, axes)
29    }
30}