Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #![feature(generators, generator_trait)]
- use std::ops::{Generator, GeneratorState};
- #[derive(Debug)]
- enum Token {
- Paren(char),
- Ident(String),
- }
- fn get_generator() -> impl Generator<Yield=Token, Return=Result<(), &'static str>>
- {
- || {
- yield Token::Paren('(');
- yield Token::Ident("name".to_string());
- return Ok(());
- }
- }
- fn main() {
- let mut gen = get_generator();
- 'outer:
- loop {
- match unsafe { gen.resume() } {
- GeneratorState::Yielded(x) => println!("{:?}", x),
- GeneratorState::Complete(_) => {
- println!("done");
- break 'outer;
- },
- }
- }
- }
Add Comment
Please, Sign In to add comment