Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

псевдоніми для Result

Як щодо випадку, коли ми хочемо багато разів повторно використовувати конкретний тип Result? Пам’ятайте, що Rust дозволяє нам створювати псевдоніми. Зручно, ми можемо визначити один для конкретного Result, про який ідеться.

На рівні модуля створення псевдонімів може бути особливо корисним. Помилки, знайдені в конкретному модулі, часто мають той самий тип Err, тож один псевдонім може стисло визначити всі пов’язані Results. Це настільки корисно, що бібліотека std навіть надає один: io::Result!

Ось короткий приклад, щоб показати синтаксис:

use std::num::ParseIntError;

// Define a generic alias for a `Result` with the error type `ParseIntError`.
type AliasedResult<T> = Result<T, ParseIntError>;

// Use the above alias to refer to our specific `Result` type.
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)
    })
}

// Here, the alias again allows us to save some space.
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"));
}

Дивіться також:

io::Result