asynciter 0.1.0

Asynchronous iterator.
Documentation
use crate::AsyncIterator;

#[must_use = "iterators are lazy and do nothing unless consumed"]
#[derive(Debug, Clone)]
pub struct Enumerate<I> {
    inner: I,
    cnt: usize,
}

impl<I> Enumerate<I> {
    pub fn new(inner: I) -> Enumerate<I> {
        Self { inner, cnt: 0 }
    }
}

impl<I> AsyncIterator for Enumerate<I>
where
    I: AsyncIterator,
{
    type Item = (usize, <I as AsyncIterator>::Item);

    async fn next(&mut self) -> Option<Self::Item> {
        let v = self.inner.next().await?;
        let cnt = self.cnt;
        self.cnt += 1;
        Some((cnt, v))
    }

    fn size_hint(&self) -> (usize, Option<usize>) {
        self.inner.size_hint()
    }
}