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")); }