Tratamento Estruturado de Erros com Result
Já vimos o enum Result
. Ele é usado amplamente quando os erros são esperados como parte da operação normal:
use std::fs; use std::io::Read; fn main() { let file = fs::File::open("diario.txt"); match file { Ok(mut file) => { let mut contents = String::new(); file.read_to_string(&mut contents); println!("Querido diário: {contents}"); }, Err(err) => { println!("Não foi possível abrir o diário: {err}"); } } }
- Como em
Option
, o valor bem-sucedido fica dentro deResult
, forçando o desenvolvedor a extraí-lo explicitamente. Isso encoraja a verificação de erros. No caso em que um erro nunca deve acontecer,unwrap()
ouexpect()
podem ser chamados, e isso também sinaliza a intenção do desenvolvedor. - A documentação de
Result
é uma leitura recomendada. Não durante o curso, mas vale a pena mencioná-la. Ele contém muitos métodos e funções de conveniência que ajudam na programação ao estilo funcional.