fn zip<St>(self, other: St) -> Zip<Self, St>
    where
        St: Stream,
        Self: Sized,
    {
        assert_stream::<(Self::Item, St::Item), _>(Zip::new(self, other))
    }
An adapter for zipping two streams together.

The zipped stream waits for both streams to produce an item, and then
returns that pair. If either stream ends then the zipped stream will
also end.

# Examples

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

let stream1 = stream::iter(1..=3);
let stream2 = stream::iter(5..=10);

let vec = stream1.zip(stream2)
.collect::<Vec<_>>()
.await;
assert_eq!(vec![(1, 5), (2, 6), (3, 7)], vec);
# });
```
futures-util/src/stream/stream/mod.rs