Сопоставление шаблонов ржавчины: подробное руководство с примерами

“Сопоставление ржавчины” можно перевести как “Сопоставление шаблона ржавчины” на английском языке. Сопоставление с образцом — это мощная функция языка программирования Rust, которая позволяет сопоставлять структуру данных и выполнять действия на основе этих шаблонов. Вот несколько методов сопоставления с образцом в Rust, а также примеры кода:

  1. Матчевое оружие:

    fn main() {
       let number = 3;
       match number {
           1 => println!("One"),
           2 => println!("Two"),
           3 => println!("Three"),
           _ => println!("Other"),
       }
    }

    В этом примере значение numberсопоставляется с различными шаблонами с использованием рукавов сопоставления, и соответствующий блок кода выполняется.

  2. Деструктуризация:

    struct Point {
       x: i32,
       y: i32,
    }
    fn main() {
       let p = Point { x: 0, y: 0 };
       match p {
           Point { x, y } => println!("x: {}, y: {}", x, y),
       }
    }

    Здесь структура Pointдеструктурируется в ответвлении сопоставления для извлечения полей xи y.

  3. Перечисления:

    enum Color {
       Red,
       Green,
       Blue,
    }
    fn main() {
       let color = Color::Red;
       match color {
           Color::Red => println!("Red color"),
           Color::Green => println!("Green color"),
           Color::Blue => println!("Blue color"),
       }
    }

    В этом примере сопоставление шаблонов используется с перечислениями для сопоставления различных вариантов цвета.

  4. Сопоставление нескольких шаблонов:

    fn main() {
       let number = 5;
       match number {
           1 | 2 | 3 => println!("One, Two, or Three"),
           4..=6 => println!("Four to Six"),
           _ => println!("Other"),
       }
    }

    Здесь несколько шаблонов сопоставляются с помощью оператора |, а шаблон диапазона сопоставляется с помощью ..=.

  5. Игнорирование значений:

    fn main() {
       let number = Some(7);
       match number {
           Some(_) => println!("Some value"),
           None => println!("None"),
       }
    }

    В этом примере подстановочный знак _используется для игнорирования значения при сопоставлении с вариантом Some.