use std::iter::FusedIterator;
use crate::RemoveData;
use super::defines::IntoIter;
use super::vec_historic::VecHistoric;
impl<T> RemoveData<T> {
pub fn new(len: usize) -> Self {
Self {
indecies: Vec::with_capacity(len),
values: Vec::with_capacity(len),
}
}
}
impl<T> IntoIter<T> {
pub fn new(inner: VecHistoric<T>) -> Self {
return Self { inner };
}
}
impl<T> Iterator for IntoIter<T> {
type Item = T;
fn next(&mut self) -> Option<T> {
self.inner.pop_front()
}
fn size_hint(&self) -> (usize, Option<usize>) {
let len = self.inner.len();
(len, Some(len))
}
}
impl<T> ExactSizeIterator for IntoIter<T> {}
impl<T> FusedIterator for IntoIter<T> {}
impl<T> DoubleEndedIterator for IntoIter<T> {
fn next_back(&mut self) -> Option<T> {
self.inner.pop_back()
}
}