39 lines
1.4 KiB
Plaintext
39 lines
1.4 KiB
Plaintext
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|}
|
|
|