3 #![feature(generators, generator_trait)]
5 use std
::ops
::{Generator, GeneratorState}
;
7 fn mkstr(my_name
: String
, my_mood
: String
) -> String
{
8 format
!("{} is {}", my_name
.trim(), my_mood
.trim())
11 fn my_scenario() -> impl Generator
<String
, Yield
= &'
static str, Return
= String
> {
13 let my_name
= yield "What is your name?";
14 let my_mood
= yield "How are you feeling?";
15 mkstr(my_name
, my_mood
)
20 let mut my_session
= Box
::pin(my_scenario());
23 my_session
.as_mut().resume("_arg".to_string()),
24 GeneratorState
::Yielded("What is your name?")
27 my_session
.as_mut().resume("Your Name".to_string()),
28 GeneratorState
::Yielded("How are you feeling?")
31 my_session
.as_mut().resume("Sensory Organs".to_string()),
32 GeneratorState
::Complete("Your Name is Sensory Organs".to_string())