Несколько образцов в match в Rust
Одна ветка перебора может подходить сразу нескольким значениям. В образце через вертикальную черту перечисляют варианты, и при совпадении с любым из них выполняется один и тот же блок.
Так короче писать выходные дни, общие коды
и другие группы, где ответ одинаковый для
разных меток. Заглушку _ по-прежнему
ставят, если нужен запасной случай.
Объединим субботу и воскресенье:
let day = 6;
match day {
6 | 7 => println!("rest"),
_ => println!("work"),
}
Несколько меток можно поставить и для кодов ошибок:
let code = 404;
match code {
404 | 500 => println!("err"),
_ => println!("fine"),
}
Одну ветку ставят сразу на несколько чисел,
если ответ для них общий. Для 1 и
2 запишем одну фразу, для 3
другую. Провала в соседнюю ветку нет:
let num = 1;
let res = match num {
1 | 2 => "a",
3 => "b",
_ => "?",
};
println!("{}", res); // выведет a
Дано число:
let slot = 2;
Для 1, 2 и 3 выведите "low",
для остальных "high".
Дано число:
let mode = 9;
При 0 или 9 выведите "edge",
иначе "mid".
Скажите, чем образец с вертикальной чертой отличается от нескольких отдельных веток с одним и тем же телом.