Оператор ? (Result)
Ранний выход с Err при ошибке.
Сигнатура
expr? // в функции -> Result<_, E>Оператор ? разворачивает Ok, а при Err сразу возвращает ошибку из функции. Это идиоматичная замена ручному match для проброса ошибок.
fn double(s: &str) -> Result<i32, std::num::ParseIntError> {
let n = s.parse::<i32>()?;
Ok(n * 2)
}
println!("{:?}", double("21")); // Ok(42)