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 型を持つため、単一のエイリアスで関連する すべての Result を簡潔に定義できます。これは非常に有用なので、std ライブラリでさえ その 1 つである io::Result を提供しています!

構文を示す簡単な例を見てみましょう。

use std::num::ParseIntError;

// エラー型が `ParseIntError` である `Result` のジェネリックエイリアスを定義します。
type AliasedResult<T> = Result<T, ParseIntError>;

// 上記のエイリアスを使用して、特定の `Result` 型を参照します。
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)
    })
}

// ここでも、このエイリアスによって少し記述を短くできます。
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