next

Function next 

Source
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
Hide additional 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    }