1
1
use futures:: executor:: block_on;
2
+ use futures:: pin_mut;
2
3
use futures_util:: future:: { err, ok, try_join_all, TryJoinAll } ;
3
4
use std:: fmt:: Debug ;
4
5
use std:: future:: Future ;
5
6
6
- fn assert_done < T , F > ( actual_fut : F , expected : T )
7
+ #[ track_caller]
8
+ fn assert_done < T > ( actual_fut : impl Future < Output = T > , expected : T )
7
9
where
8
10
T : PartialEq + Debug ,
9
- F : FnOnce ( ) -> Box < dyn Future < Output = T > + Unpin > ,
10
11
{
11
- let output = block_on ( actual_fut ( ) ) ;
12
+ pin_mut ! ( actual_fut) ;
13
+ let output = block_on ( actual_fut) ;
12
14
assert_eq ! ( output, expected) ;
13
15
}
14
16
15
17
#[ test]
16
18
fn collect_collects ( ) {
17
- assert_done ( || Box :: new ( try_join_all ( vec ! [ ok( 1 ) , ok( 2 ) ] ) ) , Ok :: < _ , usize > ( vec ! [ 1 , 2 ] ) ) ;
18
- assert_done ( || Box :: new ( try_join_all ( vec ! [ ok( 1 ) , err( 2 ) ] ) ) , Err ( 2 ) ) ;
19
- assert_done ( || Box :: new ( try_join_all ( vec ! [ ok( 1 ) ] ) ) , Ok :: < _ , usize > ( vec ! [ 1 ] ) ) ;
19
+ assert_done ( try_join_all ( vec ! [ ok( 1 ) , ok( 2 ) ] ) , Ok :: < _ , usize > ( vec ! [ 1 , 2 ] ) ) ;
20
+ assert_done ( try_join_all ( vec ! [ ok( 1 ) , err( 2 ) ] ) , Err ( 2 ) ) ;
21
+ assert_done ( try_join_all ( vec ! [ ok( 1 ) ] ) , Ok :: < _ , usize > ( vec ! [ 1 ] ) ) ;
20
22
// REVIEW: should this be implemented?
21
- // assert_done(|| Box::new( try_join_all(Vec::<i32>::new() )), Ok(vec![]));
23
+ // assert_done(try_join_all(Vec::<i32>::new()), Ok(vec![]));
22
24
23
25
// TODO: needs more tests
24
26
}
@@ -27,18 +29,18 @@ fn collect_collects() {
27
29
fn try_join_all_iter_lifetime ( ) {
28
30
// In futures-rs version 0.1, this function would fail to typecheck due to an overly
29
31
// conservative type parameterization of `TryJoinAll`.
30
- fn sizes ( bufs : Vec < & [ u8 ] > ) -> Box < dyn Future < Output = Result < Vec < usize > , ( ) > > + Unpin > {
32
+ fn sizes ( bufs : Vec < & [ u8 ] > ) -> impl Future < Output = Result < Vec < usize > , ( ) > > {
31
33
let iter = bufs. into_iter ( ) . map ( |b| ok :: < usize , ( ) > ( b. len ( ) ) ) ;
32
- Box :: new ( try_join_all ( iter) )
34
+ try_join_all ( iter)
33
35
}
34
36
35
- assert_done ( || sizes ( vec ! [ & [ 1 , 2 , 3 ] , & [ ] , & [ 0 ] ] ) , Ok ( vec ! [ 3_usize , 0 , 1 ] ) ) ;
37
+ assert_done ( sizes ( vec ! [ & [ 1 , 2 , 3 ] , & [ ] , & [ 0 ] ] ) , Ok ( vec ! [ 3_usize , 0 , 1 ] ) ) ;
36
38
}
37
39
38
40
#[ test]
39
41
fn try_join_all_from_iter ( ) {
40
42
assert_done (
41
- || Box :: new ( vec ! [ ok( 1 ) , ok( 2 ) ] . into_iter ( ) . collect :: < TryJoinAll < _ > > ( ) ) ,
43
+ vec ! [ ok( 1 ) , ok( 2 ) ] . into_iter ( ) . collect :: < TryJoinAll < _ > > ( ) ,
42
44
Ok :: < _ , usize > ( vec ! [ 1 , 2 ] ) ,
43
45
)
44
46
}
0 commit comments