]>
Commit | Line | Data |
---|---|---|
74b04a01 XL |
1 | // run-pass |
2 | ||
3 | #![feature(generators, generator_trait)] | |
4 | ||
5 | use std::ops::{Generator, GeneratorState}; | |
6 | ||
ba9703b0 XL |
7 | fn mkstr(my_name: String, my_mood: String) -> String { |
8 | format!("{} is {}", my_name.trim(), my_mood.trim()) | |
9 | } | |
10 | ||
74b04a01 XL |
11 | fn my_scenario() -> impl Generator<String, Yield = &'static str, Return = String> { |
12 | |_arg: String| { | |
13 | let my_name = yield "What is your name?"; | |
14 | let my_mood = yield "How are you feeling?"; | |
ba9703b0 | 15 | mkstr(my_name, my_mood) |
74b04a01 XL |
16 | } |
17 | } | |
18 | ||
19 | fn main() { | |
20 | let mut my_session = Box::pin(my_scenario()); | |
21 | ||
22 | assert_eq!( | |
23 | my_session.as_mut().resume("_arg".to_string()), | |
24 | GeneratorState::Yielded("What is your name?") | |
25 | ); | |
26 | assert_eq!( | |
27 | my_session.as_mut().resume("Your Name".to_string()), | |
28 | GeneratorState::Yielded("How are you feeling?") | |
29 | ); | |
30 | assert_eq!( | |
31 | my_session.as_mut().resume("Sensory Organs".to_string()), | |
32 | GeneratorState::Complete("Your Name is Sensory Organs".to_string()) | |
33 | ); | |
34 | } |