broker_tokio/stream/
iter.rs1use crate::stream::Stream;
2
3use core::pin::Pin;
4use core::task::{Context, Poll};
5
6#[derive(Debug)]
8#[must_use = "streams do nothing unless polled"]
9pub struct Iter<I> {
10 iter: I,
11}
12
13impl<I> Unpin for Iter<I> {}
14
15pub fn iter<I>(i: I) -> Iter<I::IntoIter>
33where
34 I: IntoIterator,
35{
36 Iter {
37 iter: i.into_iter(),
38 }
39}
40
41impl<I> Stream for Iter<I>
42where
43 I: Iterator,
44{
45 type Item = I::Item;
46
47 fn poll_next(mut self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll<Option<I::Item>> {
48 Poll::Ready(self.iter.next())
49 }
50
51 fn size_hint(&self) -> (usize, Option<usize>) {
52 self.iter.size_hint()
53 }
54}