Конструкция match в Rust

В языке программирования Rust существует специальная конструкция match. Она служит для оценки какого-нибудь выражения путем сравнения этого выражения с набором значений. В случае совпадения значений выполняется определенный код.

Формально конструкция match определяется следующим образом:

После оператора match указывают сравниваемое выражение, к примеру, переменная. Потом идет перечисление тех значений, с которыми надо сравнивать.

После оператора => после каждого значения следуют действия, которые будут выполняться в том случае, если значения будут соответствовать сравниваемому выражению.

В самом конце, то есть после всех значений, указывают универсальное значение _. Его действия выполнятся, когда ни одно из значений не будет соответствовать сравниваемому выражению.

Рассмотрим пример:

Мы видим, что в нашей match-конструкции происходит последовательное сравнение значения переменной num со значениями 1, 2, 3. Так как num равняется 2, переменная соответствует одному из искомых значений.

В результате на консоль выведется строка "два".

Можно рассмотреть и другую ситуацию:

В этой конструкции значение переменной num не совпадает ни с одним из значений в нашей match-конструкции, таким образом, будет применяться следующий код:

На практике конструкция match способна и возвращать значение. В такой ситуации у нас есть возможность присвоить это значение переменной:

В коде выше результат конструкции match присваивается соответствующей переменной, которая называется result. При этом возвращаемые значения указаны после оператора =>. В нашем примере речь идет о строках "один", "два", "три" и "непонятно". А так как переменная num равняется 3, то и конструкция match возвратит нам строку "три".

По материалам https://metanit.com/rust/tutorial/.