O código Rust pode ter uma infinidade de representações dos erros, mas a biblioteca padrão tem uma trait universal std::error::Error
para descrever os erros.
Usando um ponteiro inteligente Box
podemos usar o tipo Box<dyn std::error::Error>
como um tipo comum para retornar os erros, porque nos permite propagar um erro na heap e interagir com ele em alto nível sem precisar conhecer um tipo específico.
No início do Tour por Rust, aprendemos que main
pode retornar um erro. Agora podemos retornar um tipo capaz de descrever quase qualquer tipo de erro que possa ocorrer em nosso programa, desde que a estrutura de dados do erro implemente a trait usual Error
do Rust.
fn main() -> Result<(), Box<dyn std::error:Error>>