Desestructuración de structs en Rust con coincidencia de patrones

Beginner

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

Introducción

En este laboratorio, aprenderá sobre la desestructuración de structs en Rust, que le permite extraer los campos individuales y sus valores de un struct mediante coincidencia de patrones.

Nota: Si el laboratorio no especifica un nombre de archivo, puede usar cualquier nombre de archivo que desee. Por ejemplo, puede usar main.rs, compilarlo y ejecutarlo con rustc main.rs &&./main.

structs

De manera similar, un struct se puede desestructurar como se muestra:

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

    // Intente cambiar los valores en el struct para ver qué pasa
    let foo = Foo { x: (1, 2), y: 3 };

    match foo {
        Foo { x: (1, b), y } => println!("El primer valor de x es 1, b = {},  y = {} ", b, y),

        // se puede desestructurar structs y renombrar las variables,
        // el orden no es importante
        Foo { y: 2, x: i } => println!("y es 2, i = {:?}", i),

        // y también se puede ignorar algunas variables:
        Foo { y,.. } => println!("y = {}, no nos importa x", y),
        // esto generará un error: el patrón no menciona el campo `x`
        //Foo { y } => println!("y = {}", y),
    }

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

    // No es necesario un bloque match para desestructurar structs:
    let Foo { x : x0, y: y0 } = faa;
    println!("Fuera: x0 = {x0:?}, y0 = {y0}");
}

Resumen

¡Felicidades! Has completado el laboratorio de Structs. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.