Guest User

Untitled

a guest
Nov 16th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.67 KB | None | 0 0
  1. #![feature(generators, generator_trait)]
  2.  
  3. use std::ops::{Generator, GeneratorState};
  4.  
  5. #[derive(Debug)]
  6. enum Token {
  7. Paren(char),
  8. Ident(String),
  9. }
  10.  
  11. fn get_generator() -> impl Generator<Yield=Token, Return=Result<(), &'static str>>
  12. {
  13. || {
  14. yield Token::Paren('(');
  15. yield Token::Ident("name".to_string());
  16. return Ok(());
  17. }
  18. }
  19.  
  20. fn main() {
  21. let mut gen = get_generator();
  22.  
  23. 'outer:
  24. loop {
  25. match unsafe { gen.resume() } {
  26. GeneratorState::Yielded(x) => println!("{:?}", x),
  27. GeneratorState::Complete(_) => {
  28. println!("done");
  29. break 'outer;
  30. },
  31. }
  32. }
  33. }
Add Comment
Please, Sign In to add comment