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.