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> = std::slice::Iter<'a, Self::Item> where T: 'a;
21
22 fn iter(&self) -> Self::Iterator<'_> {
23 self.as_slice().iter()
24 }
25}