🦀
Rust初心者のためのResult型とOption型
Result
とOption
入門
この記事では、Rust初心者向けに Result
型 と Option
型 について解説しています。
概要
Rustプログラミング言語では、成功と失敗 と 値の存在と欠如 を扱うために、Result
とOption
という2つの強力な概念が提供されています。
この2つは列挙型(enum
)になり、コードの堅牢性と可読性を高める役割を果たし、エラー処理と値の取り扱いをより明確にします。
この記事では、これらの概念の基本的な使い方と理解を初心者に向けて解説します。
目次
Result
型
Result
型は、成功した場合 と エラーが発生した場合 の2つの結果を表します。
Result<T, E>
T
型は成功値、E
型はエラー値になります。
成功と失敗の表現
fn divide(numerator: f64, denominator: f64) -> Result<f64, &'static str> {
if denominator != 0.0 {
Ok(numerator / denominator)
} else {
Err("Cannot divide by zero")
}
}
let result = divide(10.0, 2.0);
match result {
Ok(value) => println!("Result: {}", value),
Err(err) => println!("Error: {}", err),
}
Option
型
Option
型は、値が存在するかどうか を表します。
Option<T>
T
型は存在する値、None
は値がないことを示します。
値の存在と欠如
fn find_even_number(numbers: &[i32]) -> Option<i32> {
for &number in numbers {
if number % 2 == 0 {
return Some(number);
}
}
None
}
let numbers = [1, 3, 5, 7];
let result = find_even_number(&numbers);
match result {
Some(even_number) => println!("Even number: {}", even_number),
None => println!("No even number found"),
}
Result
とOption
のメソッド
これらの型は、メソッドチェーンを通じてエラーハンドリングを簡素化します。
let result: Result<i32, &'static str> = Ok(42);
let doubled_result = result.map(|n| n * 2);
let option: Option<i32> = Some(42);
let doubled_option = option.map(|n| n * 2);
まとめ
-
Result
成功値とエラー値の両方を表現します。エラーハンドリングに使用されます。 -
Option
値の存在または欠如を表します。値がない可能性がある場合に使用されます。
これらの概念は、Rustプログラミングにおいて非常に中心的で、効果的なコードの記述に不可欠です。この記事がResult
とOption
の基本的な理解の助けとなることを願っています。
Discussion