3434
3535impl < S , U , F > Stream for FlatMap < S , U , S :: Item , F >
3636where
37- S : Stream < Item : IntoStream < IntoStream = U , Item = U :: Item > > + std:: marker:: Unpin ,
38- U : Stream + std:: marker:: Unpin ,
37+ S : Stream ,
38+ S :: Item : IntoStream < IntoStream = U , Item = U :: Item > ,
39+ U : Stream ,
3940 F : FnMut ( S :: Item ) -> U ,
4041{
4142 type Item = U :: Item ;
@@ -58,7 +59,11 @@ pin_project! {
5859 }
5960}
6061
61- impl < S : Stream < Item : IntoStream > > Flatten < S , S :: Item > {
62+ impl < S > Flatten < S , S :: Item >
63+ where
64+ S : Stream ,
65+ S :: Item : IntoStream ,
66+ {
6267 pub fn new ( stream : S ) -> Flatten < S , S :: Item > {
6368 Flatten {
6469 inner : FlattenCompat :: new ( stream) ,
@@ -68,8 +73,9 @@ impl<S: Stream<Item: IntoStream>> Flatten<S, S::Item> {
6873
6974impl < S , U > Stream for Flatten < S , <S :: Item as IntoStream >:: IntoStream >
7075where
71- S : Stream < Item : IntoStream < IntoStream = U , Item = U :: Item > > + std:: marker:: Unpin ,
72- U : Stream + std:: marker:: Unpin ,
76+ S : Stream ,
77+ S :: Item : IntoStream < IntoStream = U , Item = U :: Item > ,
78+ U : Stream ,
7379{
7480 type Item = U :: Item ;
7581
@@ -83,7 +89,9 @@ pin_project! {
8389 /// this type.
8490 #[ derive( Clone , Debug ) ]
8591 struct FlattenCompat <S , U > {
92+ #[ pin]
8693 stream: S ,
94+ #[ pin]
8795 frontiter: Option <U >,
8896 }
8997}
@@ -100,8 +108,9 @@ impl<S, U> FlattenCompat<S, U> {
100108
101109impl < S , U > Stream for FlattenCompat < S , U >
102110where
103- S : Stream < Item : IntoStream < IntoStream = U , Item = U :: Item > > + std:: marker:: Unpin ,
104- U : Stream + std:: marker:: Unpin ,
111+ S : Stream ,
112+ S :: Item : IntoStream < IntoStream = U , Item = U :: Item > ,
113+ U : Stream ,
105114{
106115 type Item = U :: Item ;
107116
0 commit comments