mirror of
https://github.com/tokio-rs/tokio.git
synced 2025-10-01 12:20:39 +00:00
stream: impl Extend for StreamMap (#4272)
## Motivation This allows `StreamMap` to be used with [`futures::stream::StreamExt::collect`][collect]. My use case is something like this: ```rust let stream_map: StreamMap<_, _> = things .into_iter() .map(|thing| make_stream(thing)) // iterator of futures .collect::<FuturesUnordered<_>>() // stream of streams .collect::<StreamMap<_, _>>() // combine all the inner streams into one .await; async fn make_stream(thing: Thing) -> impl Stream { ... } ``` [collect]: https://docs.rs/futures/0.3.17/futures/stream/trait.StreamExt.html#method.collect ## Solution Add `Extend` impl that delegates to the inner `Vec`.
This commit is contained in:
parent
1a423b3322
commit
3b339024f0
@ -585,6 +585,15 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<K, V> Extend<(K, V)> for StreamMap<K, V> {
|
||||||
|
fn extend<T>(&mut self, iter: T)
|
||||||
|
where
|
||||||
|
T: IntoIterator<Item = (K, V)>,
|
||||||
|
{
|
||||||
|
self.entries.extend(iter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
mod rand {
|
mod rand {
|
||||||
use std::cell::Cell;
|
use std::cell::Cell;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user