E0308E0308 — Result-Typ stimmt nicht überein
Die Funktion gibt ein Result mit dem falschen Ok- oder Err-Typ zurück.
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 ()
}Verwandte Fehlercodes
E0502E0502 — Ausleihe als veränderlich nicht möglich, da bereits unveränderlich ausgeliehen
Ein Wert kann nicht veränderlich ausgeliehen werden, solange eine unveränderliche Ausleihe noch aktiv ist.
E0277E0277 — Typ implementiert Send nicht
Ein Typ, der Send nicht implementiert, wird in einem Kontext verwendet, der Thread-Sicherheit erfordert.
E0308E0308 — Typen stimmen nicht überein
Der erwartete Typ stimmt nicht mit dem tatsächlich angegebenen Typ überein.
E0369E0369 — Operator kann nicht auf Typ angewendet werden
Ein binärer Operator wird mit Typen verwendet, die ihn nicht unterstützen.
E0106E0106 — Fehlender Lifetime-Bezeichner
Einer Referenz in einer Funktionssignatur oder einem Struct fehlt ein Lifetime-Parameter.
E0425E0425 — Wert in diesem Gültigkeitsbereich nicht gefunden
Ein Bezeichner wird verwendet, ist aber im aktuellen Gültigkeitsbereich nicht definiert.