sklears_utils/data_structures/
ringbufferiter_traits.rs

1//! # RingBufferIter - Trait Implementations
2//!
3//! This module contains trait implementations for `RingBufferIter`.
4//!
5//! ## Implemented Traits
6//!
7//! - `Iterator`
8//!
9//! 🤖 Generated with [SplitRS](https://github.com/cool-japan/splitrs)
10
11use super::types::RingBufferIter;
12
13impl<'a, T: Clone> Iterator for RingBufferIter<'a, T> {
14    type Item = &'a T;
15    fn next(&mut self) -> Option<Self::Item> {
16        if self.index >= self.buffer.size {
17            return None;
18        }
19        let actual_index = (self.buffer.head + self.index) % self.buffer.capacity;
20        self.index += 1;
21        self.buffer.data[actual_index].as_ref()
22    }
23}