Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #![feature(generators, generator_trait)]
- use std::ops::{Generator, GeneratorState};
- macro_rules! yield_from {
- ($g:expr) => (
- unsafe {
- loop {
- match $g.resume() {
- GeneratorState::Yielded(y) => yield y,
- GeneratorState::Complete(ret) => break ret,
- }
- }
- }
- );
- }
- fn generate() -> impl Generator<Yield = u8, Return = u8> {
- || {
- yield_from!(|| {
- for i in 0..5u8 {
- yield i;
- }
- });
- return 99
- }
- }
- fn main() {
- crash();
- }
- fn generate_without_compiler_error() -> impl Generator<Yield = u8, Return = u8> {
- || {
- let mut inner = || {
- for i in 0..5u8 {
- yield i;
- }
- };
- yield_from!(inner);
- return 99
- }
- }
Add Comment
Please, Sign In to add comment