РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
538 of 1245 menu

Паттерн _

Паттерн _ (подчеркивание) в контексте enum используется для игнорирования значения при сопоставлении с образцом. Он позволяет не привязывать переменную к значению, которое не будет использоваться в дальнейшем. Паттерн _ применяется в конструкциях match, if let и while let, а также при деструктуризации кортежных и структурных вариантов enum.

Синтаксис

match value { Variant(_) => { /* ... */ }, _ => { /* ... */ }, }

Пример

Давайте создадим enum Message с кортежным вариантом Move и проигнорируем его значение с помощью паттерна _:

enum Message { Quit, Move(i32, i32), } fn main() { let msg = Message::Move(10, 20); match msg { Message::Move(_, _) => println!("Move variant"), Message::Quit => println!("Quit variant"), } }

Результат выполнения кода:

Move variant

Пример

Давайте используем паттерн _ для игнорирования всех вариантов, кроме одного:

enum Message { Quit, Move(i32, i32), Write(String), } fn main() { let msg = Message::Write(String::from("abcde")); match msg { Message::Write(text) => println!("Write: {}", text), _ => println!("Other variant"), } }

Результат выполнения кода:

Write: abcde

Пример

Давайте применим паттерн _ в структуре Option, чтобы проигнорировать значение Some:

fn main() { let opt = Some(12345); match opt { Some(_) => println!("Has value"), None => println!("No value"), } }

Результат выполнения кода:

Has value

Пример

Давайте используем паттерн _ в структуре Result для игнорирования ошибки:

fn main() { let res: Result<i32, &str> = Ok(100); match res { Ok(value) => println!("Ok: {}", value), Err(_) => println!("Error occurred"), } }

Результат выполнения кода:

Ok: 100

Смотрите также

  • оператор match,
    который выполняет сопоставление с образцом
  • конструкция if let,
    которая выполняет сопоставление с одним образцом
  • конструкция while let,
    которая выполняет сопоставление в цикле
  • паттерн destructure,
    который выполняет деструктуризацию enum
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить