Avatar ·

Como criar e usar tipos de erro personalizados em Rust corretamente?

Olá a todos! Sou novo em Rust e estou tentando entender o tratamento de erros. Li o livro, mas ainda não entendo como criar meus próprios tipos de erro para uma biblioteca. Eu tenho um parser simples de arquivos de configuração. Quero que ele retorne erros compreensíveis: "erro de sintaxe na linha X", "parâmetro desconhecido", "erro de entrada/saída". Atualmente, fiz assim: ```rust enum ConfigError { IoError, ParseError, UnknownParam, } ``` Mas isso é inconveniente — não há informação sobre onde exatamente ocorreu o erro. Além disso, não consigo usar `?` com `std::io::Error` e meu tipo ao mesmo tempo. Li sobre as traits `std::error::Error`, `Display` e `Debug`, mas não entendo como implementá-las corretamente. Vi que muitos usam a crate `thiserror`, mas quero primeiro entender como