34
34
35
35
impl < S , U , F > Stream for FlatMap < S , U , S :: Item , F >
36
36
where
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 ,
39
40
F : FnMut ( S :: Item ) -> U ,
40
41
{
41
42
type Item = U :: Item ;
@@ -58,7 +59,11 @@ pin_project! {
58
59
}
59
60
}
60
61
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
+ {
62
67
pub fn new ( stream : S ) -> Flatten < S , S :: Item > {
63
68
Flatten {
64
69
inner : FlattenCompat :: new ( stream) ,
@@ -68,8 +73,9 @@ impl<S: Stream<Item: IntoStream>> Flatten<S, S::Item> {
68
73
69
74
impl < S , U > Stream for Flatten < S , <S :: Item as IntoStream >:: IntoStream >
70
75
where
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 ,
73
79
{
74
80
type Item = U :: Item ;
75
81
@@ -83,7 +89,9 @@ pin_project! {
83
89
/// this type.
84
90
#[ derive( Clone , Debug ) ]
85
91
struct FlattenCompat <S , U > {
92
+ #[ pin]
86
93
stream: S ,
94
+ #[ pin]
87
95
frontiter: Option <U >,
88
96
}
89
97
}
@@ -100,8 +108,9 @@ impl<S, U> FlattenCompat<S, U> {
100
108
101
109
impl < S , U > Stream for FlattenCompat < S , U >
102
110
where
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 ,
105
114
{
106
115
type Item = U :: Item ;
107
116
0 commit comments