moirai_iter/async_iter/
sources.rs1use super::traits::{AsyncIterator, IntoAsyncIterator};
4
5pub struct AsyncVecIter<T> {
7 items: Vec<T>,
8}
9
10impl<T: Send + 'static> AsyncVecIter<T> {
11 pub fn new(items: Vec<T>) -> Self {
13 Self { items }
14 }
15}
16
17impl<T: Send + 'static> AsyncIterator for AsyncVecIter<T> {
18 type Item = T;
19
20 fn into_vec(self) -> Vec<Self::Item> {
21 self.items
22 }
23}
24
25impl<T: Send + 'static> IntoAsyncIterator for Vec<T> {
26 type Item = T;
27 type IntoAsyncIter = AsyncVecIter<T>;
28
29 fn into_async_iter(self) -> Self::IntoAsyncIter {
30 AsyncVecIter::new(self)
31 }
32}
33
34pub struct AsyncRangeIter {
36 start: usize,
37 end: usize,
38}
39
40impl AsyncRangeIter {
41 pub fn new(start: usize, end: usize) -> Self {
43 Self { start, end }
44 }
45}
46
47impl AsyncIterator for AsyncRangeIter {
48 type Item = usize;
49
50 fn into_vec(self) -> Vec<Self::Item> {
51 (self.start..self.end).collect()
52 }
53}