redstone-ml 0.0.0

High-performance Machine Learning, Auto-Differentiation and Tensor Algebra crate for Rust
Documentation
use crate::buffer_iterator::BufferIterator;
use crate::dtype::RawDataType;
use crate::NdArray;

pub struct FlatIterator<T: RawDataType> {
    buffer_iterator: BufferIterator<T>,
}

impl<T: RawDataType> FlatIterator<T> {
    pub(super) fn from(tensor: &NdArray<T>) -> Self {
        Self {
            buffer_iterator: BufferIterator::from(tensor),
        }
    }
}

impl<T: RawDataType> Iterator for FlatIterator<T> {
    type Item = T;

    fn next(&mut self) -> Option<Self::Item> {
        self.buffer_iterator.next().map(|ptr| unsafe { *ptr })
    }
}