use core::iter;
use std::{slice, vec};
use super::*;
impl<T> IntoIterator for NEVec<T> {
type Item = T;
type IntoIter = iter::Chain<iter::Once<T>, vec::IntoIter<Self::Item>>;
#[inline]
fn into_iter(self) -> Self::IntoIter {
iter::once(self.head).chain(self.tail)
}
}
impl<'a, T> IntoIterator for &'a NEVec<T> {
type Item = &'a T;
type IntoIter = iter::Chain<iter::Once<&'a T>, slice::Iter<'a, T>>;
#[inline]
fn into_iter(self) -> Self::IntoIter {
iter::once(&self.head).chain(self.tail.iter())
}
}
impl<T> NEVec<T> {
#[inline]
pub fn iter(&self) -> iter::Chain<iter::Once<&T>, slice::Iter<T>> {
iter::once(&self.head).chain(self.tail.iter())
}
}