Desestructuración de Arrays y Slices en Rust

RustRustBeginner
Practicar Ahora

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

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, puedes aprender cómo se pueden desestructurar arrays y slices en Rust, demostrado a través de un ejemplo de código que muestra diferentes patrones para coincidir valores en el array y enlazarlos a variables.

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL rust(("Rust")) -.-> rust/DataTypesGroup(["Data Types"]) rust(("Rust")) -.-> rust/FunctionsandClosuresGroup(["Functions and Closures"]) rust(("Rust")) -.-> rust/AdvancedTopicsGroup(["Advanced Topics"]) rust(("Rust")) -.-> rust/BasicConceptsGroup(["Basic Concepts"]) rust/BasicConceptsGroup -.-> rust/variable_declarations("Variable Declarations") rust/DataTypesGroup -.-> rust/string_type("String Type") rust/FunctionsandClosuresGroup -.-> rust/function_syntax("Function Syntax") rust/FunctionsandClosuresGroup -.-> rust/expressions_statements("Expressions and Statements") rust/AdvancedTopicsGroup -.-> rust/operator_overloading("Traits for Operator Overloading") subgraph Lab Skills rust/variable_declarations -.-> lab-99311{{"Desestructuración de Arrays y Slices en Rust"}} rust/string_type -.-> lab-99311{{"Desestructuración de Arrays y Slices en Rust"}} rust/function_syntax -.-> lab-99311{{"Desestructuración de Arrays y Slices en Rust"}} rust/expressions_statements -.-> lab-99311{{"Desestructuración de Arrays y Slices en Rust"}} rust/operator_overloading -.-> lab-99311{{"Desestructuración de Arrays y Slices en Rust"}} end

arrays/slices

Al igual que las tuplas, los arrays y los slices se pueden desestructurar de la siguiente manera:

fn main() {
    // Intenta cambiar los valores en el array, ¡o conviértelo en un slice!
    let array = [1, -2, 6];

    match array {
        // Vincula el segundo y el tercer elementos a las variables respectivas
        [0, second, third] =>
            println!("array[0] = 0, array[1] = {}, array[2] = {}", second, third),

        // Los valores individuales se pueden ignorar con _
        [1, _, third] => println!(
            "array[0] = 1, array[2] = {} y array[1] fue ignorado",
            third
        ),

        // También puedes vincular algunos y ignorar el resto
        [-1, second,..] => println!(
            "array[0] = -1, array[1] = {} y todos los demás fueron ignorados",
            second
        ),
        // El código siguiente no se compilaría
        // [-1, second] =>...

        // O almacenarlos en otro array/slice (el tipo depende
        // del del valor contra el que se está coincidiendo)
        [3, second, tail @..] => println!(
            "array[0] = 3, array[1] = {} y los otros elementos fueron {:?}",
            second, tail
        ),

        // Combinando estos patrones, podemos, por ejemplo, vincular el primer y
        // el último valor, y almacenar el resto de ellos en un solo array
        [first, middle @.., last] => println!(
            "array[0] = {}, middle = {:?}, array[2] = {}",
            first, middle, last
        ),
    }
}

Resumen

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