Оператор ? (Option)
Ранний выход с None при пустом значении.
Сигнатура
expr? // в функции -> Option<_>Оператор ? разворачивает Some, а при None немедленно выходит из функции, возвращая None. Работает только в функциях, возвращающих Option.
fn first_char(s: &str) -> Option<char> {
let c = s.chars().next()?;
Some(c)
}
println!("{:?}", first_char("hi")); // Some('h')