Rust · Essencial · Português · Técnico
operador interrogação
Operador ? que, em Result ou Option, entrega o valor interno em caso de sucesso, ou retorna da função com o erro (ou None) em caso de falha.
Onde usar
Está em quase todo código de I/O e parsing, no lugar de match repetitivo. A função precisa devolver um tipo compatível, senão aparece o erro 'the ? operator can only be used in a function that returns Result'.
Em código
use std::num::ParseIntError as E;
fn dobra(s: &str) -> Result<i32, E> {
let n: i32 = s.trim().parse()?;
Ok(n * 2)
}Exemplos
Troca esse match por um operador interrogação.
O operador interrogação só funciona em função que devolve Result.
Cuidado
Não é try/catch: ele não captura a falha, só a propaga ao chamador, convertendo o erro com From.
Sinônimos
operador ?