Result<T,E>
とOption<T>
型の値に適用可能。
fn main() {
let _ = question_result();
let _ = question_option();
}
fn question_result() -> Result<bool, ()> {
println!("1. {:?}", Ok(true)?); // true
println!("2. {:?}", Err(())?); // Err(())?を評価してreturn。println!は実行されない
Ok(true) // 実行されない
}
fn question_option() -> Option<bool> {
println!("3. {:?}", Some(true)?); // true
println!("4. {:?}", None?); // None?を評価してreturn。println!は実行されない
Some(true) // 実行されない
}
$ cargo run 2> /dev/null
1. true
3. true
参考: https://doc.rust-lang.org/reference/expressions/operator-expr.html#the-question-mark-operator