Оператор ? (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)
← Все записи: Стандартная библиотека Rust
Поддержать проект