Деструктуризация Rust Structs с использованием сопоставления шаблонов

Beginner

This tutorial is from open-source community. Access the source code

Введение

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

Примечание: Если в лабе не указано имя файла, вы можете использовать любое имя файла, которое хотите. Например, вы можете использовать main.rs, скомпилировать и запустить его с помощью rustc main.rs &&./main.

structs

Аналогично, struct можно деструктурировать, как показано ниже:

fn main() {
    struct Foo {
        x: (u32, u32),
        y: u32,
    }

    // Попробуйте изменить значения в структуре, чтобы увидеть, что произойдет
    let foo = Foo { x: (1, 2), y: 3 };

    match foo {
        Foo { x: (1, b), y } => println!("Первый элемент x равен 1, b = {},  y = {} ", b, y),

        // вы можете деструктурировать structs и переименовать переменные,
        // порядок не имеет значения
        Foo { y: 2, x: i } => println!("y равен 2, i = {:?}", i),

        // и вы также можете игнорировать некоторые переменные:
        Foo { y,.. } => println!("y = {}, нас не интересует x", y),
        // это вызовет ошибку: шаблон не упоминает поле `x`
        //Foo { y } => println!("y = {}", y),
    }

    let faa = Foo { x: (1, 2), y: 3 };

    // Вам не нужно использовать блок match для деструктуризации structs:
    let Foo { x : x0, y: y0 } = faa;
    println!("Вне блока: x0 = {x0:?}, y0 = {y0}");
}

Резюме

Поздравляем! Вы завершили лабу по структурам. Вы можете практиковаться в других лабах в LabEx, чтобы улучшить свои навыки.