@@ -78,7 +78,7 @@ use try_for_each::TryForEeachFuture;
7878
7979pub use chain:: Chain ;
8080pub use filter:: Filter ;
81- pub use flatten:: FlatMap ;
81+ pub use flatten:: { FlatMap , Flatten } ;
8282pub use fuse:: Fuse ;
8383pub use inspect:: Inspect ;
8484pub 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