rust / expert
Snippet
Rekursive Fehlerbehebungs-Pipeline über Fallback-Decoder
Dieses Design etabliert einen rekursiven Fehlerbehebungsfluss, bei dem fehlgeschlagene primäre Parser-Ergebnisse auf sekundäre Parser-Logik zurückgreifen und rekursiv versuchen, den Fehler unter Verwendung eines sicheren Konfigurationszustands zu beheben.
snippet.rs
rust
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
enum PipelineError {InvalidFormat(String),NetworkFailure(String),}fn primary_decoder(input: &str) -> Result<String, PipelineError> {if input.starts_with("RAW:") {Ok(input[4..].to_string())} else {Err(PipelineError::InvalidFormat("Missing RAW prefix".to_string()))}}fn secondary_decoder(input: &str) -> Result<String, PipelineError> {if input.starts_with("HEX:") {Ok(format!("Decoded Hex: {}", &input[4..]))} else {Err(PipelineError::InvalidFormat("Missing HEX prefix".to_string()))}}fn run_pipeline(input: &str, depth: usize) -> Result<String, PipelineError> {if depth == 0 {return Err(PipelineError::NetworkFailure("Max recovery depth reached".to_string()));}primary_decoder(input).or_else(|err| match err {PipelineError::InvalidFormat(_) => {secondary_decoder(input).or_else(|_| run_pipeline("RAW:fallback", depth - 1))}other => Err(other),})}
Erklärung
1
primary_decoder(input).or_else(...)
Versucht den ersten Dekodierungsschritt und fängt Fehlerereignisse ab, um die Ausführung umzuleiten.
2
match err { PipelineError::InvalidFormat(_) => ... }
Filtert Fehler-Varianten, um eine kontextspezifische Fallback-Behandlung anzuwenden.
3
run_pipeline("RAW:fallback", depth - 1)
Ruft die Pipeline rekursiv mit einer modifizierten Eingabe und verringerter Rekursionstiefe auf, um Stack-Overflows zu vermeiden.
4
other => Err(other)
Reicht nicht behebbare Fehler-Varianten direkt im Ausführungs-Stack nach oben weiter.