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