1
1
#![ feature( generators, generator_trait, never_type) ]
2
2
3
- use std:: ops:: { GeneratorState :: { self , * } , Generator } ;
4
- use std:: pin:: Pin ;
5
- use std:: sync:: atomic:: { AtomicUsize , Ordering } ;
6
3
use std:: fmt:: Debug ;
7
4
use std:: mem:: ManuallyDrop ;
5
+ use std:: ops:: {
6
+ Generator ,
7
+ GeneratorState :: { self , * } ,
8
+ } ;
9
+ use std:: pin:: Pin ;
8
10
use std:: ptr;
11
+ use std:: sync:: atomic:: { AtomicUsize , Ordering } ;
9
12
10
13
fn basic ( ) {
11
14
fn finish < T > ( mut amt : usize , mut t : T ) -> T :: Return
12
- where T : Generator < Yield = usize >
15
+ where
16
+ T : Generator < Yield = usize > ,
13
17
{
14
18
// We are not moving the `t` around until it gets dropped, so this is okay.
15
19
let mut t = unsafe { Pin :: new_unchecked ( & mut t) } ;
@@ -23,7 +27,7 @@ fn basic() {
23
27
}
24
28
GeneratorState :: Complete ( ret) => {
25
29
assert_eq ! ( amt, 0 ) ;
26
- return ret
30
+ return ret;
27
31
}
28
32
}
29
33
}
@@ -46,7 +50,7 @@ fn basic() {
46
50
assert_eq ! ( x, 2 ) ;
47
51
} ) ;
48
52
49
- finish ( 7 * 8 / 2 , || {
53
+ finish ( 7 * 8 / 2 , || {
50
54
for i in 0 ..8 {
51
55
yield i;
52
56
}
@@ -67,7 +71,10 @@ fn basic() {
67
71
} ) ;
68
72
69
73
finish ( 2 , || {
70
- if { yield 1 ; false } {
74
+ if {
75
+ yield 1 ;
76
+ false
77
+ } {
71
78
yield 1 ;
72
79
panic ! ( )
73
80
}
@@ -90,7 +97,9 @@ fn basic() {
90
97
let b = true ;
91
98
finish ( 1 , || {
92
99
yield 1 ;
93
- if b { return ; }
100
+ if b {
101
+ return ;
102
+ }
94
103
#[ allow( unused) ]
95
104
let x = never ( ) ;
96
105
#[ allow( unreachable_code) ]
@@ -101,7 +110,10 @@ fn basic() {
101
110
finish ( 3 , || {
102
111
yield 1 ;
103
112
#[ allow( unreachable_code) ]
104
- let _x: ( String , !) = ( String :: new ( ) , { yield 2 ; return } ) ;
113
+ let _x: ( String , !) = ( String :: new ( ) , {
114
+ yield 2 ;
115
+ return ;
116
+ } ) ;
105
117
} ) ;
106
118
}
107
119
0 commit comments