Aliases para Result

Beginner

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

Introdução

Neste laboratório, aprendemos como criar aliases (apelidos) para um tipo Result específico em Rust, permitindo que o reutilizemos múltiplas vezes e definamos convenientemente todos os Results associados dentro de um módulo.

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

Aliases (Apelidos) para Result

E se quisermos reutilizar um tipo Result específico várias vezes? Lembre-se que o Rust nos permite criar aliases (apelidos). Convenientemente, podemos definir um para o Result específico em questão.

Em nível de módulo, a criação de aliases pode ser particularmente útil. Erros encontrados em um módulo específico frequentemente têm o mesmo tipo Err, então um único alias pode definir sucintamente todos os Results associados. Isso é tão útil que a biblioteca std até fornece um: io::Result!

Aqui está um exemplo rápido para mostrar a sintaxe:

use std::num::ParseIntError;

// Define um alias genérico para um `Result` com o tipo de erro `ParseIntError`.
type AliasedResult<T> = Result<T, ParseIntError>;

// Use o alias acima para referenciar nosso tipo `Result` específico.
fn multiply(first_number_str: &str, second_number_str: &str) -> AliasedResult<i32> {
    first_number_str.parse::<i32>().and_then(|first_number| {
        second_number_str.parse::<i32>().map(|second_number| first_number * second_number)
    })
}

// Aqui, o alias novamente nos permite economizar algum espaço.
fn print(result: AliasedResult<i32>) {
    match result {
        Ok(n)  => println!("n is {}", n),
        Err(e) => println!("Error: {}", e),
    }
}

fn main() {
    print(multiply("10", "2"));
    print(multiply("t", "2"));
}

Resumo

Parabéns! Você concluiu o laboratório Aliases para Result. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.