Skip to content

Commit 176359a

Browse files
committed
Add Stream::flatten
1 parent 8138afb commit 176359a

File tree

1 file changed

+33
-3
lines changed

1 file changed

+33
-3
lines changed

src/stream/stream/mod.rs

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ use try_for_each::TryForEeachFuture;
7878

7979
pub use chain::Chain;
8080
pub use filter::Filter;
81-
pub use flatten::FlatMap;
81+
pub use flatten::{FlatMap, Flatten};
8282
pub use fuse::Fuse;
8383
pub use inspect::Inspect;
8484
pub use map::Map;
@@ -590,8 +590,7 @@ extension_trait! {
590590
591591
let s: VecDeque<_> = vec![inner1, inner2].into_iter().collect();
592592
593-
let flat= s.flat_map(|s| s.into_stream() );
594-
let v: Vec<u8> = flat.collect().await;
593+
let v :Vec<_> = s.flat_map(|s| s.into_stream()).collect().await;
595594
596595
assert_eq!(v, vec![1,2,3,4,5,6]);
597596
@@ -607,6 +606,37 @@ extension_trait! {
607606
FlatMap::new(self, f)
608607
}
609608

609+
#[doc = r#"
610+
Creates an stream that flattens nested structure.
611+
612+
# Examples
613+
614+
Basic usage:
615+
616+
```
617+
# async_std::task::block_on(async {
618+
619+
use std::collections::VecDeque;
620+
use async_std::prelude::*;
621+
622+
let inner1: VecDeque<u8> = vec![1,2,3].into_iter().collect();
623+
let inner2: VecDeque<u8> = vec![4,5,6].into_iter().collect();
624+
let s: VecDeque<_> = vec![inner1, inner2].into_iter().collect();
625+
626+
let v: Vec<_> = s.flatten().collect().await;
627+
628+
assert_eq!(v, vec![1,2,3,4,5,6]);
629+
630+
# });
631+
"#]
632+
fn flatten(self) -> Flatten<Self>
633+
where
634+
Self: Sized,
635+
Self::Item: IntoStream,
636+
{
637+
Flatten::new(self)
638+
}
639+
610640
#[doc = r#"
611641
Both filters and maps a stream.
612642

0 commit comments

Comments
 (0)