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}