macro_rules! ask {
(
$skin: expr,
$question: expr,
{ $(($key: expr, $answer: expr) => $r: block)+ }
) => { ... };
(
$skin: expr,
$question: expr,
($default_answer: expr)
{ $(($key: expr, $answer: expr) => $r: block)+ }
) => { ... };
}
Expand description
ask the user to choose among proposed answers.
This macro makes it possible to propose several choices, with an optional default ones, to execute blocks, to optionaly return a value.
Example:
use termimad::*;
let skin = get_default_skin();
let beverage = ask!(skin, "What do I serve you ?", {
('b', "**B**eer") => {
ask!(skin, "Really ? We have wine and orange juice too", (2) {
("oj", "**o**range **j**uice") => { "orange juice" }
('w' , "ok for some wine") => { "wine" }
('b' , "I said **beer**") => { "beer" }
( 2 , "Make it **2** beer glasses!") => { "beer x 2" }
})
}
('w', "**W**ine") => {
println!("An excellent choice!");
"wine"
}
});
Limits compared to the Question API:
- the default answer, if any, must be among the declared ones
Note that examples/ask contains several examples of this macro.