Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗rsPmEnMc 297 of 373 menu
◀ ▶

Разбор перечисления в Rust

Разбор перечисления устроен так же, как разбор числа: слева значение, справа ветки с образцами. Для типа с вариантами образец - это имя варианта через двойное двоеточие после имени типа.

Разбор обязан назвать каждый вариант, иначе код не собирается. Компилятор считает, что значение может быть любым из списка, и требует отдельную ветку на каждое имя:

fn main() { enum Status { Draft, Sent, Done, } let s = Status::Sent; match s { Status::Draft => println!("draft"), Status::Sent => println!("sent"), Status::Done => println!("done"), } }

Если убрать любую ветку, сборка остановится с сообщением о непокрытом варианте. Для трех имен нужны ровно три ветки без заглушки:

fn main() { enum Status { Draft, Sent, Done, } let s = Status::Done; match s { Status::Draft => println!("d"), Status::Sent => println!("s"), Status::Done => println!("f"), } }

Дано перечисление:

enum Lamp { Dark, Bright, } let l = Lamp::Dark;

Разберите l и выведите "dark" или "bright" в main.rs.

Дано перечисление:

enum Gate { Open, Shut, } let g = Gate::Shut;

Скажите, сколько веток нужно в разборе, чтобы программа собралась.

Дано перечисление:

enum Phase { A, B, C, } let p = Phase::B;

Разберите p и выведите букву варианта одной строкой в main.rs.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить