Desestruturação de Arrays e Slices em Rust

Beginner

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

Introdução

Neste laboratório, você aprenderá como arrays e slices podem ser desestruturados em Rust, demonstrado por meio de um exemplo de código que exibe diferentes padrões para combinar valores no array e vinculá-los a variáveis.

Nota: Se o laboratório não especificar um nome de arquivo, você pode usar qualquer nome de arquivo desejado. Por exemplo, você pode usar main.rs, compilar e executá-lo com rustc main.rs && ./main.

arrays/slices

Assim como tuplas, arrays e slices podem ser desestruturados desta forma:

fn main() {
    // Tente alterar os valores no array, ou transformá-lo em um slice!
    let array = [1, -2, 6];

    match array {
        // Vincula o segundo e o terceiro elementos às respectivas variáveis
        [0, second, third] =>
            println!("array[0] = 0, array[1] = {}, array[2] = {}", second, third),

        // Valores únicos podem ser ignorados com _
        [1, _, third] => println!(
            "array[0] = 1, array[2] = {} e array[1] foi ignorado",
            third
        ),

        // Você também pode vincular alguns e ignorar o restante
        [-1, second, ..] => println!(
            "array[0] = -1, array[1] = {} e todos os outros foram ignorados",
            second
        ),
        // O código abaixo não seria compilado
        // [-1, second] => ...

        // Ou armazená-los em outro array/slice (o tipo depende do valor
        // que está sendo comparado)
        [3, second, tail @ ..] => println!(
            "array[0] = 3, array[1] = {} e os outros elementos foram {:?}",
            second, tail
        ),

        // Combinando esses padrões, podemos, por exemplo, vincular os primeiros e
        // últimos valores e armazenar o restante deles em um único array
        [first, middle @ .., last] => println!(
            "array[0] = {}, middle = {:?}, array[2] = {}",
            first, middle, last
        ),
    }
}

Resumo

Parabéns! Você concluiu o laboratório de Arrays/Slices. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.