bluejay_core/
as_iter.rs

1pub trait AsIter {
2    type Item;
3    type Iterator<'a>: Iterator<Item = &'a Self::Item>
4    where
5        Self: 'a;
6
7    fn iter(&self) -> Self::Iterator<'_>;
8
9    fn is_empty(&self) -> bool {
10        self.iter().next().is_none()
11    }
12
13    fn len(&self) -> usize {
14        self.iter().count()
15    }
16}
17
18impl<T> AsIter for Vec<T> {
19    type Item = T;
20    type Iterator<'a>
21        = std::slice::Iter<'a, Self::Item>
22    where
23        T: 'a;
24
25    fn iter(&self) -> Self::Iterator<'_> {
26        self.as_slice().iter()
27    }
28}