0 Tage Serie
rust / expert
Snippet

Dynamische Fehler-Downcasts und Kontext-Kontextualisierung

Dieses Snippet zeigt, wie ein benutzerdefinierter Fehlertyp definiert und ein dynamischer Downcast auf einem Trait-Objekt von dyn Error durchgeführt wird. Mithilfe von downcast_ref inspiziert der Code konkrete Fehlertypen zur Laufzeit, was eine spezialisierte Fehlerbehebung oder Kontextaggregation für bestimmte Fehlerfälle ermöglicht.

snippet.rs
rust
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
use std::error::Error;
use std::fmt;
#[derive(Debug)]
pub struct QueryError {
pub query: String,
}
impl fmt::Display for QueryError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "Query failed: {}", self.query)
}
}
impl Error for QueryError {}
pub fn process_error(err: &dyn Error) -> Option<&QueryError> {
err.downcast_ref::<QueryError>()
}
Erklärung
1
pub struct QueryError
Definiert eine benutzerdefinierte Fehlerstruktur, die domänenspezifische Kontext-Metadaten enthält.
2
impl fmt::Display for QueryError
Implementiert die Formatierung, um eine menschenlesbare Beschreibung des Fehlers auszugeben.
3
impl Error for QueryError {}
Markiert die Struktur als Standardbibliotheks-Fehler, was deren Verwendung als Trait-Objekt ermöglicht.
4
err.downcast_ref::<QueryError>()
Verwendet die Methode downcast_ref, um zu prüfen, ob der dynamische Fehler mit QueryError übereinstimmt.