@@ -77,12 +77,12 @@ mod disabled {
77
77
} )
78
78
}
79
79
80
- pub fn try_par_for_each_in < T : IntoIterator , E : Copy > (
80
+ pub fn try_par_for_each_in < T : IntoIterator , E > (
81
81
t : T ,
82
82
mut for_each : impl FnMut ( T :: Item ) -> Result < ( ) , E > ,
83
83
) -> Result < ( ) , E > {
84
84
parallel_guard ( |guard| {
85
- t. into_iter ( ) . fold ( Ok ( ( ) ) , |ret , i| guard. run ( || for_each ( i) ) . unwrap_or ( ret ) . and ( ret ) )
85
+ t. into_iter ( ) . filter_map ( | i| guard. run ( || for_each ( i) ) ) . fold ( Ok ( ( ) ) , Result :: and )
86
86
} )
87
87
}
88
88
@@ -178,7 +178,7 @@ mod enabled {
178
178
179
179
pub fn try_par_for_each_in <
180
180
T : IntoIterator + IntoParallelIterator < Item = <T as IntoIterator >:: Item > ,
181
- E : Copy + Send ,
181
+ E : Send ,
182
182
> (
183
183
t : T ,
184
184
for_each : impl Fn ( <T as IntoIterator >:: Item ) -> Result < ( ) , E > + DynSync + DynSend ,
@@ -187,11 +187,10 @@ mod enabled {
187
187
if mode:: is_dyn_thread_safe ( ) {
188
188
let for_each = FromDyn :: from ( for_each) ;
189
189
t. into_par_iter ( )
190
- . fold_with ( Ok ( ( ) ) , |ret , i| guard. run ( || for_each ( i) ) . unwrap_or ( ret ) . and ( ret ) )
191
- . reduce ( || Ok ( ( ) ) , |a , b| a . and ( b ) )
190
+ . filter_map ( | i| guard. run ( || for_each ( i) ) )
191
+ . reduce ( || Ok ( ( ) ) , Result :: and)
192
192
} else {
193
- t. into_iter ( )
194
- . fold ( Ok ( ( ) ) , |ret, i| guard. run ( || for_each ( i) ) . unwrap_or ( ret) . and ( ret) )
193
+ t. into_iter ( ) . filter_map ( |i| guard. run ( || for_each ( i) ) ) . fold ( Ok ( ( ) ) , Result :: and)
195
194
}
196
195
} )
197
196
}
0 commit comments