|  | // run-pass | 
|  |  | 
|  | // aux-build:xcrate.rs | 
|  |  | 
|  | #![feature(generators, generator_trait)] | 
|  |  | 
|  | extern crate xcrate; | 
|  |  | 
|  | use std::ops::{GeneratorState, Generator}; | 
|  | use std::pin::Pin; | 
|  |  | 
|  | fn main() { | 
|  | let mut foo = xcrate::foo(); | 
|  |  | 
|  | match Pin::new(&mut foo).resume(()) { | 
|  | GeneratorState::Complete(()) => {} | 
|  | s => panic!("bad state: {:?}", s), | 
|  | } | 
|  |  | 
|  | let mut foo = xcrate::bar(3); | 
|  |  | 
|  | match Pin::new(&mut foo).resume(()) { | 
|  | GeneratorState::Yielded(3) => {} | 
|  | s => panic!("bad state: {:?}", s), | 
|  | } | 
|  | match Pin::new(&mut foo).resume(()) { | 
|  | GeneratorState::Complete(()) => {} | 
|  | s => panic!("bad state: {:?}", s), | 
|  | } | 
|  | } |