Cómo crear y usar tipos de error personalizados en Rust correctamente
¡Hola a todos! Soy nuevo en Rust y estoy tratando de entender el manejo de errores. Leí el libro, pero aún no comprendo cómo crear mis propios tipos de error para una biblioteca.
Tengo un simple parser de archivos de configuración. Quiero que devuelva errores claros: "error de sintaxis en la línea X", "parámetro desconocido", "error de entrada/salida". Actualmente lo hice así:
```rust
enum ConfigError {
IoError,
ParseError,
UnknownParam,
}
```
Pero esto es incómodo: no hay información sobre dónde ocurrió exactamente el error. Además, no puedo usar `?` con `std::io::Error` y mi tipo al mismo tiempo.
He leído sobre los traits `std::error::Error`, `Display` y `Debug`, pero no entiendo cómo implementarlos correctamente. Vi que muchos usan el crate `thiserror`, pero primero quiero entender cómo se hace manualmente.
¿Podrían indicarme cómo diseñar correctamente un tipo de error personalizado en Rust? ¿Cómo hacerlo compatible con los tipos de error estándar y el operador `?`? ¿Se necesita algún tipo de conversión?