Option e Result

Os tipos representam dados opcionais:

fn main() {
    let numeros = vec![10, 20, 30];
    let primeiro: Option<&i8> = numeros.first();
    println!("primeiro: {primeiro:?}");

    let ind: Result<usize, usize> = numeros.binary_search(&10);
    println!("ind: {ind:?}");
}
  • Option e Result são amplamente usados não apenas na biblioteca padrão.
  • Option<&T> não tem nenhum custo adicional de espaço em comparação com &T.
  • Result é o tipo padrão para implementar tratamento de erros, como veremos no Dia 3.
  • binary_search retorna Result<usize, usize>.
    • Se encontrado, Result::Ok contém o índice onde o elemento foi encontrado.
    • Caso contrário, Result::Err contém o índice onde tal elemento deve ser inserido.