Wie erstellt und verwendet man benutzerdefinierte Fehlertypen in Rust richtig?
Hallo zusammen! Ich bin neu in Rust und versuche, die Fehlerbehandlung zu verstehen. Ich habe das Buch gelesen, verstehe aber immer noch nicht, wie man eigene Fehlertypen für eine Bibliothek richtig erstellt.
Ich habe einen einfachen Parser für Konfigurationsdateien. Ich möchte, dass er verständliche Fehler zurückgibt: "Syntaxfehler in Zeile X", "unbekannter Parameter", "E/A-Fehler". Derzeit habe ich es so gemacht:
```rust
enum ConfigError {
IoError,
ParseError,
UnknownParam,
}
```
Aber das ist unpraktisch - es gibt keine Informationen darüber, wo genau der Fehler aufgetreten ist. Außerdem kann ich `?` nicht gleichzeitig mit `std::io::Error` und meinem eigenen Typ verwenden.
Ich habe über die Traits `std::error::Error`, `Display` und `Debug` gelesen, verstehe aber nicht, wie man sie richtig implementiert. Ich habe gesehen, dass viele die Crate `thiserror` verwenden, möchte aber zuerst verstehen, wie