Перейти к основному содержимому
  1. Rust/

Сопоставление с образцом (Pattern Matching) в Rust

·810 слов·4 минуты· loading · loading · · ·Rust-basic
О Rust - Эта статья часть цикла.
Статей прочитано 0/38
0%
📚 Введение и дополнительные материалы
🟢 Начальный уровень (Rust-basic)
19 Сопоставление с образцом (Pattern Matching) в Rust (текущая)
Не прочитана
Не прочитана
🔵 Средний уровень (Rust-middle)

Введение
#

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

Базовый синтаксис, деструктуризация и условия
#

Конструкция match умеет значительно больше, чем простое сравнение числа с литералами. Она умеет деструктурировать сложные типы данных и уточнять шаблоны с помощью дополнительных условий — Match Guards.

Давайте разберём основные приёмы на интерактивном слайде:

Основы match: синтаксис, деструктуризация, Match Guards
Шаг 1/3
 1fn main() {
 2    let season = "лето";
 3
 4    match season {
 5        "весна"  => println!("Весна — всё цветёт"),
 6        "лето"   => println!("Лето — самое тёплое время"),
 7        "осень"  => println!("Осень — время листопада"),
 8        "зима"   => println!("Зима — время снега"),
 9        _        => println!("Неизвестное время года"),
10    }
11}

Базовый синтаксис match

  • Конструкция match сравнивает значение с каждой «веткой» по порядку и выполняет код первого совпадения.
  • Паттерн _ — специальный «заглушитель», который срабатывает, если ни один другой шаблон не совпал. Rust требует, чтобы все возможные значения были обработаны.

Match с перечислениями (Enums)
#

match особенно мощен в работе с перечислениями. Варианты enum могут не только быть простыми маркерами, но и хранить данные — и match позволяет их безопасно извлечь прямо в ветке шаблона.

Match с перечислениями: Color и Exercise
Шаг 1/2
 1// ?hidden:start
 2#[allow(dead_code)]
 3// ?hidden:end
 4enum Color {
 5    Red,
 6    Blue,
 7    Green,
 8    RGB(u32, u32, u32),
 9}
10
11fn main() {
12    let color = Color::RGB(122, 17, 40);
13
14    match color {
15        Color::Red   => println!("Красный"),
16        Color::Blue  => println!("Синий"),
17        Color::Green => println!("Зелёный"),
18        Color::RGB(r, g, b) => println!("RGB: {}, {}, {}", r, g, b),
19    }
20}

Match с перечислениями (Enums)

  • match — основной инструмент для работы с перечислениями (enum) в Rust.
  • Каждая ветка соответствует одному из вариантов enum. Компилятор проверяет, что все варианты обработаны.
  • Вариант Color::RGB(r, g, b) извлекает (деструктурирует) числа из данных, хранящихся внутри этого варианта enum.

Шаблоны match позволяют обрабатывать различные варианты и извлекать связанные данные — безопасно и эффективно. Это даёт нам возможность легко обрабатывать различные случаи и извлекать данные из сложных типов, сохраняя при этом чистоту и ясность кода.

Когда мы используем match, мы не только упрощаем наш код, но и делаем его более надёжным. Компилятор гарантирует, что мы обработали все возможные варианты — иначе код просто не скомпилируется.

Заключение
#

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

Также приятно отметить, что механизм паттерн-матчинга появился начиная с версии 3 в Dart (там используется ключевое слово switch) и активно применяется в языке Elixir.


Проверь свои знания!
#

Пройдите короткий интерактивный тест, чтобы закрепить понимание Pattern Matching в Rust.

История обновлений

  • Добавил примеры с кодом для сопоставления шаблонов (Pattern Matching).
Статья прочитана
Пожалуйста, оцените насколько статья была вам полезна и понятна
Цикл статей
О Rust - Эта статья часть цикла.
Статей прочитано 0/38
0%
📚 Введение и дополнительные материалы
🟢 Начальный уровень (Rust-basic)
19 Сопоставление с образцом (Pattern Matching) в Rust (текущая)
Не прочитана
Не прочитана
🔵 Средний уровень (Rust-middle)

Связанные статьи