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|}