Result のエイリアス

Beginner

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

はじめに

この実験では、Rust において特定のResult型のエイリアスを作成する方法を学びます。これにより、それを複数回再利用して、モジュール内のすべての関連するResultを便利に定義することができます。

注: 実験でファイル名が指定されていない場合、好きなファイル名を使用できます。たとえば、main.rsを使用して、rustc main.rs &&./mainでコンパイルして実行することができます。

Resultのエイリアス

特定のResult型を何度も再利用したい場合、どうすればよいでしょうか?Rust はエイリアスを作成できることを思い出してください。便利なことに、問題の特定のResultに対してエイリアスを定義することができます。

モジュールレベルでエイリアスを作成すると、特に便利です。特定のモジュールで見つかるエラーは、多くの場合、同じErr型を持っています。したがって、単一のエイリアスですべての関連するResultを簡潔に定義することができます。これは非常に便利で、stdライブラリでさえそれを提供しています: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"));
}

まとめ

おめでとうございます!あなたはResultのエイリアスの実験を完了しました。あなたの技術を向上させるために、LabEx でさらに多くの実験を行って練習することができます。