pub fn iter<I>(i: I) -> Iter<I::IntoIter>
where
    I: IntoIterator,
{
    assert_stream::<I::Item, _>(Iter { iter: i.into_iter() })
}
Converts an `Iterator` into a `Stream` which is always ready
to yield the next value.

Iterators in Rust don't express the ability to block, so this adapter
simply always calls `iter.next()` and returns that.

```
# futures::executor::block_on(async {
use futures::stream::{self, StreamExt};

let stream = stream::iter(vec![17, 19]);
assert_eq!(vec![17, 19], stream.collect::<Vec<i32>>().await);
# });
```
futures-util/src/stream/iter.rs