blob: 6e2f23ee77b8df0426ef4aba9b09bdb20dfc6d32 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
1| |#![feature(generators, generator_trait)]
2| |#![allow(unused_assignments)]
3| |
4| |use std::ops::{Generator, GeneratorState};
5| |use std::pin::Pin;
6| |
7| 1|fn main() {
8| 1| let mut generator = || {
9| 1| yield 1;
10| 1| return "foo"
11| 1| };
12| |
13| 1| match Pin::new(&mut generator).resume(()) {
14| 1| GeneratorState::Yielded(1) => {}
15| 0| _ => panic!("unexpected value from resume"),
16| | }
17| 1| match Pin::new(&mut generator).resume(()) {
18| 1| GeneratorState::Complete("foo") => {}
19| 0| _ => panic!("unexpected value from resume"),
20| | }
21| |
22| 1| let mut generator = || {
23| 1| yield 1;
24| 1| yield 2;
25| 0| yield 3;
26| 0| return "foo"
27| 0| };
28| |
29| 1| match Pin::new(&mut generator).resume(()) {
30| 1| GeneratorState::Yielded(1) => {}
31| 0| _ => panic!("unexpected value from resume"),
32| | }
33| 1| match Pin::new(&mut generator).resume(()) {
34| 1| GeneratorState::Yielded(2) => {}
35| 0| _ => panic!("unexpected value from resume"),
36| | }
37| 1|}
|