@@ -21,30 +21,30 @@ flowchart LR
21
21
is equivalent to
22
22
23
23
``` rust
24
- let (ch1 , w1 ) = channel ();
25
- let (ch2 , w2 ) = channel ();
26
- tokio :: spawn ({
27
- let r1 = ch1 . reader ();
28
- async move {
29
- let x = r1 . get (). await . unwrap ();
30
- tokio :: task :: yield_now (). await ;
31
- let s = format! (" {}pong" , x );
32
- w2 . put (s ). unwrap ();
33
- }
34
- });
35
- let y = tokio :: spawn ({
36
- let r2 = ch2 . reader ();
37
- async move {
38
- let x = " ping" . to_owned ();
39
- w1 . put (x ). unwrap ();
40
- tokio :: task :: yield_now (). await ;
41
- let y = r2 . get (). await . unwrap ();
42
- y
43
- }
44
- })
45
- . await
46
- . unwrap ();
47
- assert_eq! (y , " pingpong" )
24
+ let (ch1 , w1 ) = channel ();
25
+ let (ch2 , w2 ) = channel ();
26
+ tokio :: spawn ({
27
+ let r1 = ch1 . reader ();
28
+ async move {
29
+ let x = r1 . get (). await . unwrap ();
30
+ tokio :: task :: yield_now (). await ;
31
+ let s = format! (" {}pong" , x );
32
+ w2 . put (s ). unwrap ();
33
+ }
34
+ });
35
+ let y = tokio :: spawn ({
36
+ let r2 = ch2 . reader ();
37
+ async move {
38
+ let x = " ping" . to_owned ();
39
+ w1 . put (x ). unwrap ();
40
+ tokio :: task :: yield_now (). await ;
41
+ let y = r2 . get (). await . unwrap ();
42
+ y
43
+ }
44
+ })
45
+ . await
46
+ . unwrap ();
47
+ assert_eq! (y , " pingpong" )
48
48
```
49
49
50
50
----
@@ -67,39 +67,39 @@ flowchart LR
67
67
is equivalent to
68
68
69
69
``` rust
70
- let (ch1 , w1 ) = channel ();
71
- let (ch2 , w2 ) = channel ();
72
- let (ch3 , w3 ) = channel ();
73
- let (ch4 , w4 ) = channel ();
74
- // λx. x+2
75
- tokio :: spawn ({
76
- let r1 = ch1 . reader ();
77
- async move {
78
- let x = r1 . get (). await . unwrap ();
79
- w2 . put (x + 2 ). unwrap ();
80
- }
81
- });
82
- // λx. x*2
83
- tokio :: spawn ({
84
- let r1 = ch1 . reader ();
85
- async move {
86
- // Emulating expensive I/O
87
- tokio :: time :: sleep (std :: time :: Duration :: from_secs (5 )). await ;
88
- let x = r1 . get (). await . unwrap ();
89
- w3 . put (x * 2 ). unwrap ();
90
- }
91
- });
92
- // λxy. x*y
93
- tokio :: spawn ({
94
- let r2 = ch2 . reader ();
95
- let r3 = ch3 . reader ();
96
- async move {
97
- let (x , y ) = tokio :: try_join! (r2 . get (), r3 . get ()). unwrap ();
98
- w4 . put (x * y ). unwrap ();
99
- }
100
- });
101
- w1 . put (1 ). unwrap ();
102
- let r4 = ch4 . reader ();
103
- let ans = r4 . get (). await . unwrap ();
104
- assert_eq! (ans , 6 );
70
+ let (ch1 , w1 ) = channel ();
71
+ let (ch2 , w2 ) = channel ();
72
+ let (ch3 , w3 ) = channel ();
73
+ let (ch4 , w4 ) = channel ();
74
+ // λx. x+2
75
+ tokio :: spawn ({
76
+ let r1 = ch1 . reader ();
77
+ async move {
78
+ let x = r1 . get (). await . unwrap ();
79
+ w2 . put (x + 2 ). unwrap ();
80
+ }
81
+ });
82
+ // λx. x*2
83
+ tokio :: spawn ({
84
+ let r1 = ch1 . reader ();
85
+ async move {
86
+ // Emulating expensive I/O
87
+ tokio :: time :: sleep (std :: time :: Duration :: from_secs (5 )). await ;
88
+ let x = r1 . get (). await . unwrap ();
89
+ w3 . put (x * 2 ). unwrap ();
90
+ }
91
+ });
92
+ // λxy. x*y
93
+ tokio :: spawn ({
94
+ let r2 = ch2 . reader ();
95
+ let r3 = ch3 . reader ();
96
+ async move {
97
+ let (x , y ) = tokio :: try_join! (r2 . get (), r3 . get ()). unwrap ();
98
+ w4 . put (x * y ). unwrap ();
99
+ }
100
+ });
101
+ w1 . put (1 ). unwrap ();
102
+ let r4 = ch4 . reader ();
103
+ let ans = r4 . get (). await . unwrap ();
104
+ assert_eq! (ans , 6 );
105
105
```
0 commit comments