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}