thiserror
e anyhow
Os crates thiserror
e anyhow
são amplamente utilizados para simplificar o tratamento de erros.
thiserror
é frequentemente usado em bibliotecas para criar tipos de erro personalizados que implementamFrom<T>
.anyhow
é frequentemente usado por aplicações para ajudar no tratamento de erros em funções, incluindo adicionar informações contextuais aos seus erros.
Speaker Notes
This slide should take about 5 minutes.
thiserror
- A macro
Error
é fornecida porthiserror
e possui vários atributos úteis para ajudar a definir tipos de erro de forma compacta. - O trait
std::error::Error
é derivado automaticamente. - A mensagem de
#[error]
é usada para derivar o traitDisplay
.
anyhow
anyhow::Error
é essencialmente um wrapper em torno deBox<dyn Error>
. Como tal, geralmente não é uma boa escolha para a API pública de uma biblioteca, mas é amplamente utilizado em aplicações.anyhow::Result<V>
é um alias de tipo paraResult<V, anyhow::Error>
.- O tipo de erro real dentro dele pode ser extraído para exame, se necessário.
- A funcionalidade fornecida por
anyhow::Result<T>
pode ser familiar para desenvolvedores Go, pois fornece padrões de uso e ergonomia semelhantes a(T, error)
de Go. anyhow::Context
é um trait implementado para os tipos padrãoResult
eOption
.use anyhow::Context
é necessário para habilitar.context()
e.with_context()
nesses tipos.