はじめに
この実験では、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 でさらに多くの実験を行って練習することができます。