問題一覧に戻る
中級エラー処理
問題58: unwrap_or系メソッド

OptionやResultの値を安全に取り出すメソッド群です。unwrap_orはデフォルト値を直接指定、unwrap_or_elseはクロージャで動的に生成。map_orは変換とデフォルト値を組み合わせます。ok_orはOptionをResultに変換。これらはpanic!を避けて安全に処理します。

fn get_config_value(key: &str) -> Option<String> {
match key {
"host" => Some("localhost".to_string()),
"port" => Some("8080".to_string()),
_ => None,
}
}

fn main() {
// unwrap_or
let host = get_config_value("host").("127.0.0.1".to_string());
println!("Host: {}", host);

// unwrap_or_else
let timeout = get_config_value("timeout").( {
println!("Using default timeout");
"30".to_string()
});
println!("Timeout: {}", timeout);

// map_or
let port: i32 = get_config_value("port")
.(, |s| s.parse().unwrap_or(3000));
println!("Port: {}", port);

// ok_or
let result: Result<String, &str> = get_config_value("missing")
.("Config not found");
println!("Result: {:?}", result);
}