1- mod  countingwaker  { 
2-      use  futures :: task :: { self ,   ArcWake ,   Waker } ; 
3-      use  std:: sync:: { Arc ,  Mutex } ; 
1+ use  futures :: task :: { self ,   ArcWake ,   Waker } ; 
2+ use  std :: panic ; 
3+ use  std:: sync:: { Arc ,  Mutex } ; 
44
5-      struct  CountingWaker  { 
6-          nr_wake :  Mutex < i32 > , 
7-      } 
5+ struct  CountingWaker  { 
6+     nr_wake :  Mutex < i32 > , 
7+ } 
88
9-     impl  CountingWaker  { 
10-         fn  new ( )  -> Self  { 
11-             Self  { 
12-                 nr_wake :  Mutex :: new ( 0 ) , 
13-             } 
9+ impl  CountingWaker  { 
10+     fn  new ( )  -> Self  { 
11+         Self  { 
12+             nr_wake :  Mutex :: new ( 0 ) , 
1413        } 
14+     } 
1515
16-         fn  wakes ( & self )  -> i32  { 
17-             * self . nr_wake . lock ( ) . unwrap ( ) 
18-         } 
16+     fn  wakes ( & self )  -> i32  { 
17+         * self . nr_wake . lock ( ) . unwrap ( ) 
1918    } 
19+ } 
2020
21-     impl  ArcWake  for  CountingWaker  { 
22-         fn  wake_by_ref ( arc_self :  & Arc < Self > )  { 
23-             let  mut  lock = arc_self. nr_wake . lock ( ) . unwrap ( ) ; 
24-             * lock += 1 ; 
25-         } 
21+ impl  ArcWake  for  CountingWaker  { 
22+     fn  wake_by_ref ( arc_self :  & Arc < Self > )  { 
23+         let  mut  lock = arc_self. nr_wake . lock ( ) . unwrap ( ) ; 
24+         * lock += 1 ; 
2625    } 
26+ } 
2727
28-      #[ test]  
29-      fn  create_from_arc ( )  { 
30-          let  some_w = Arc :: new ( CountingWaker :: new ( ) ) ; 
28+ #[ test]  
29+ fn  create_from_arc ( )  { 
30+     let  some_w = Arc :: new ( CountingWaker :: new ( ) ) ; 
3131
32-          let  w1:  Waker  = task:: waker ( some_w. clone ( ) ) ; 
33-          assert_eq ! ( 2 ,  Arc :: strong_count( & some_w) ) ; 
34-          w1. wake_by_ref ( ) ; 
35-          assert_eq ! ( 1 ,  some_w. wakes( ) ) ; 
32+     let  w1:  Waker  = task:: waker ( some_w. clone ( ) ) ; 
33+     assert_eq ! ( 2 ,  Arc :: strong_count( & some_w) ) ; 
34+     w1. wake_by_ref ( ) ; 
35+     assert_eq ! ( 1 ,  some_w. wakes( ) ) ; 
3636
37-          let  w2 = w1. clone ( ) ; 
38-          assert_eq ! ( 3 ,  Arc :: strong_count( & some_w) ) ; 
37+     let  w2 = w1. clone ( ) ; 
38+     assert_eq ! ( 3 ,  Arc :: strong_count( & some_w) ) ; 
3939
40-          w2. wake_by_ref ( ) ; 
41-          assert_eq ! ( 2 ,  some_w. wakes( ) ) ; 
40+     w2. wake_by_ref ( ) ; 
41+     assert_eq ! ( 2 ,  some_w. wakes( ) ) ; 
4242
43-          drop ( w2) ; 
44-          assert_eq ! ( 2 ,  Arc :: strong_count( & some_w) ) ; 
45-          drop ( w1) ; 
46-          assert_eq ! ( 1 ,  Arc :: strong_count( & some_w) ) ; 
47-      } 
43+     drop ( w2) ; 
44+     assert_eq ! ( 2 ,  Arc :: strong_count( & some_w) ) ; 
45+     drop ( w1) ; 
46+     assert_eq ! ( 1 ,  Arc :: strong_count( & some_w) ) ; 
47+ } 
4848
49-      #[ test]  
50-      fn  ref_wake_same ( )  { 
51-          let  some_w = Arc :: new ( CountingWaker :: new ( ) ) ; 
49+ #[ test]  
50+ fn  ref_wake_same ( )  { 
51+     let  some_w = Arc :: new ( CountingWaker :: new ( ) ) ; 
5252
53-          let  w1:  Waker  = task:: waker ( some_w. clone ( ) ) ; 
54-          let  w2 = task:: waker_ref ( & some_w) ; 
55-          let  w3 = w2. clone ( ) ; 
53+     let  w1:  Waker  = task:: waker ( some_w. clone ( ) ) ; 
54+     let  w2 = task:: waker_ref ( & some_w) ; 
55+     let  w3 = w2. clone ( ) ; 
5656
57-         assert ! ( w1. will_wake( & w2) ) ; 
58-         assert ! ( w2. will_wake( & w3) ) ; 
59-     } 
57+     assert ! ( w1. will_wake( & w2) ) ; 
58+     assert ! ( w2. will_wake( & w3) ) ; 
6059} 
6160
6261#[ test]  
6362fn  proper_refcount_on_wake_panic ( )  { 
64-     use  futures:: task:: { self ,  ArcWake ,  Waker } ; 
65-     use  std:: sync:: Arc ; 
66- 
6763    struct  PanicWaker ; 
6864
6965    impl  ArcWake  for  PanicWaker  { 
@@ -75,7 +71,13 @@ fn proper_refcount_on_wake_panic() {
7571    let  some_w = Arc :: new ( PanicWaker ) ; 
7672
7773    let  w1:  Waker  = task:: waker ( some_w. clone ( ) ) ; 
78-     assert_eq ! ( "WAKE UP" ,  * std:: panic:: catch_unwind( || w1. wake_by_ref( ) ) . unwrap_err( ) . downcast:: <& str >( ) . unwrap( ) ) ; 
74+     assert_eq ! ( 
75+         "WAKE UP" , 
76+         * panic:: catch_unwind( || w1. wake_by_ref( ) ) 
77+             . unwrap_err( ) 
78+             . downcast:: <& str >( ) 
79+             . unwrap( ) 
80+     ) ; 
7981    assert_eq ! ( 2 ,  Arc :: strong_count( & some_w) ) ;  // some_w + w1 
8082    drop ( w1) ; 
8183    assert_eq ! ( 1 ,  Arc :: strong_count( & some_w) ) ;  // some_w 
0 commit comments