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 comrustc 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.