Guest User

Untitled

a guest
May 24th, 2018
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.85 KB | None | 0 0
  1. #![feature(generators, generator_trait)]
  2. use std::ops::{Generator, GeneratorState};
  3.  
  4. macro_rules! yield_from {
  5.  
  6. ($g:expr) => (
  7. unsafe {
  8. loop {
  9. match $g.resume() {
  10. GeneratorState::Yielded(y) => yield y,
  11. GeneratorState::Complete(ret) => break ret,
  12. }
  13. }
  14. }
  15. );
  16. }
  17.  
  18.  
  19. fn generate() -> impl Generator<Yield = u8, Return = u8> {
  20. || {
  21. yield_from!(|| {
  22. for i in 0..5u8 {
  23. yield i;
  24. }
  25. });
  26. return 99
  27. }
  28. }
  29.  
  30. fn main() {
  31. crash();
  32. }
  33.  
  34. fn generate_without_compiler_error() -> impl Generator<Yield = u8, Return = u8> {
  35. || {
  36. let mut inner = || {
  37. for i in 0..5u8 {
  38. yield i;
  39. }
  40. };
  41.  
  42. yield_from!(inner);
  43. return 99
  44. }
  45. }
Add Comment
Please, Sign In to add comment