pub fn next<T, N>(data: T) -> ControlResult<T, N>Expand description
Get a next ControlResult with the given Node
Examples found in repository?
examples/counter.rs (line 29)
15 fn next<F>(self, rt: &mut Runtime<Self, F>) -> Control<Self>
16 where
17 F: Frontend,
18 {
19 rt.clear();
20 rt.println(format!("count: {}\n", rt.count));
21 match self {
22 MyNode::Small => {
23 // `Runtime::multiple_choice` prompts a user to choose
24 // from one of several choices
25 match rt
26 .multiple_choice("How many do you want to add?", &["1", "2", "3", "more"])?
27 {
28 n if n <= 2 => rt.count += n + 1,
29 _ => return next(MyNode::Large),
30 }
31 }
32 MyNode::Large => {
33 // `Runtime::prompt` prompts a user to enter text
34 let input = rt.prompt("Enter a number to add")?;
35 match input.parse::<usize>() {
36 Ok(i) => rt.count += i,
37 Err(_) => rt.println("Invalid number"),
38 }
39 }
40 }
41 next(MyNode::Small)
42 }More examples
examples/rooms.rs (line 33)
17 fn next<F>(self, rt: &mut Runtime<Self, F>) -> Control<Self>
18 where
19 F: Frontend,
20 {
21 rt.clear();
22 match self {
23 Room::Start => {
24 rt.println("You are in a room.");
25 rt.wait()?;
26 let next_room = rt.multiple_choice_named(
27 "Where do you want to go?",
28 vec![
29 ("The door with light behind it", Room::Exit),
30 ("The door with no light behind it", Room::Side),
31 ],
32 )?;
33 next(next_room)
34 }
35 Room::Side => {
36 rt.println(if rt.has_key {
37 "There is nothing here."
38 } else {
39 "There is a key on the floor."
40 });
41 rt.wait()?;
42 let pick_up_key = rt.multiple_choice_named(
43 "What do you want to do?",
44 Some(("Pick up the key", true))
45 .filter(|_| !rt.has_key)
46 .into_iter()
47 .chain(Some(("Go back through the door", false))),
48 )?;
49 if pick_up_key {
50 rt.has_key = true;
51 next(Room::Side)
52 } else {
53 next(Room::Start)
54 }
55 }
56 Room::Exit => {
57 rt.println("There is another door with a bright light behind it.");
58 rt.wait()?;
59 let try_to_leave = rt.multiple_choice_named(
60 "Where do you want to go?",
61 vec![
62 ("Through the door ahead", true),
63 ("Back through the door you came in", false),
64 ],
65 )?;
66 if try_to_leave {
67 if rt.has_key {
68 rt.println("The door is locked. You unlock the door with your key.");
69 rt.wait()?;
70 rt.println("You escaped! You win!");
71 rt.wait()?;
72 exit()
73 } else {
74 rt.println("The door is locked.");
75 rt.wait()?;
76 next(Room::Exit)
77 }
78 } else {
79 next(Room::Start)
80 }
81 }
82 }
83 }