ExpertiDict

Rust · Essencial · Português · Técnico

operador interrogação

/o.pe.ɾa.ˈdoʁ ĩ.te.ho.ɡa.ˈsɐ̃w̃/substantivo

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 ?

Veja também

Todos os termos de Rust