問題一覧に戻る
中級エラー処理
問題46: Option型

Option'<'T'>'はRustのnull安全性を実現する型で、値があるかないかを表現します。Some(T)は値がある場合、Noneは値がない場合を表します。matchでパターンマッチングしたり、unwrapやunwrap_orなどのメソッドで値を取り出せます。nullポインタエラーをコンパイル時に防ぐ重要な機能です。

fn divide(a: f64, b: f64) -> <f64> {
if b == 0.0 {

} else {
(a / b)
}
}

fn main() {
// Option型を使用
let result = divide(10.0, 2.0);

// Option型のマッチング
match result {
(value) => println!("Result: {}", value),
=> println!("Cannot divide by zero"),
}

// unwrapメソッド
let safe_result = divide(20.0, 4.0).();
println!("Safe result: {}", safe_result);

let default_result = divide(10.0, 0.0).(0.0);
println!("With default: {}", default_result);
}