Zum Inhalt springen
Rust-Compiler-FehlerFehler
E0308

E0308 — Result-Typ stimmt nicht überein

Die Funktion gibt ein Result mit dem falschen Ok- oder Err-Typ zurück.

rustcargo

Was verursacht diesen Fehler

Der Rückgabetyp ist Result<T, E>, aber der zurückgegebene Wert hat einen anderen T- oder E-Typ. Der ?-Operator konvertiert möglicherweise zwischen inkompatiblen Fehlertypen.

So beheben Sie ihn

Stellen Sie sicher, dass Ok- und Err-Typen mit der Funktionssignatur übereinstimmen. Implementieren Sie From<ErrorType> für Ihren Fehlertyp, um die Konvertierung mit dem ?-Operator zu ermöglichen. Verwenden Sie .map_err() zur Konvertierung von Fehlertypen. Nutzen Sie Crates wie anyhow oder thiserror für ergonomisches Fehler-Handling.

Beispiel

fn foo() -> Result<(), String> {
  Ok(42) // expected ()
}
Offizielle Dokumentation

Verwandte Fehlercodes