Es gibt Tonnen von Artikeln über die Fehlerbehandlung in Rust, aber alle scheinen dazu zu führen, dass ein Fehlerobjekt zurückgegeben wird, was eine Panik oder etwas ähnliches verursacht.Wie schreibe ich die Signatur einer Funktion, die einen Fehler anzeigt und das Programm beendet?
Ich möchte Benutzereingabe für einen Fehler überprüfen, also kann ich es nicht nur um den Stapel überliefern, und ich kann nicht einfach in Panik (es ist kaum benutzerfreundlich)
Derzeit bin ich ein leeres if let
mit mit einem else
Block, um dies zu handhaben, aber es scheint hässlich und peinlich. Gibt es in den Bergen der Bequemlichkeitsmethoden in Option
und Result
nichts, was es mir erlaubt, eine endgültige Methode aufzurufen?
unwrap_or_else
nur beschwert, dass der Wert der Schließung der falsche Typ ist.
use std::io::{stderr, Write};
use std::env;
use std::process::exit;
fn error_out(e: &str) {
writeln!(&mut stderr(), "{}", e).expect(format!("Failed to print error: {}", e).as_str());
exit(1);
}
fn main() {
if let Some(filename) = env::args().nth(1) {} else {
error_out("No filename provided");
};
}
Minor Nit: '!' Ist kein Typ; Es ist etwas, das Sie * anstelle * eines Rückgabetyps verwenden können. –