Als ich zum ersten Mal in Rust eintauchte, begann ich Code zu schreiben, um den Inhalt einer Datei für eine spätere Verarbeitung auszugeben (jetzt drucke ich sie gerade aus)Cleaner Weg, um den Inhalt einer Datei als String in Rust zu bekommen?
Gibt es einen Reiniger? Weg, dies zu tun, als ich derzeit bin? Es scheint, als ob ich mit etwa es viel zu ausführlich sein, aber ich bin keine gute Art und Weise zu sehen, es
use std::io;
use std::io::File;
use std::os;
use std::str;
fn main() {
println!("meh");
let filename = &os::args()[1];
let contents = match File::open(&Path::new(filename)).read_to_end() {
Ok(s) => str::from_utf8(s.as_slice()).expect("this shouldn't happen").to_string(),
Err(e) => "".to_string(),
};
println!("ugh {}", contents.to_string());
}
Sie sollten nicht 'unwrap' im Produktionscode verwenden. Entweder 'match',' map' oder 'and_then'. – Hauleth
@ hauleth Das ist eine sehr strenge Aussage. Machen Sie den gleichen Anspruch für "Panik", "unerreichbar" oder "behaupten"? All dies erzeugt eine Thread-Panik. Es gibt viele Gründe, im Produktionscode zu "Panik" zu kommen. Konkret würde ich sagen, dass ** logische Fehler ** * eine Panik auslösen sollten, wenn sie auftreten. Natürlich ist dieses Beispiel kein Produktionscode, und die Behandlung von Fehlerfällen ist Sache des Benutzers des Beispiels und des Kontextes dieser Anwendung. – Shepmaster
IMHO ja. Sie sollten alle von ihnen vermeiden, wenn Sie können. Persönlich verwende ich sie nur, wenn ich sicher bin, dass dies nicht in Panik geraten wird (d. H. "FromPrimitive" auf Konstanten). Wenn ich in Panik geraten muss, sollte es in "main" passieren. In Bibliotheken sollten Sie 'Result' oder' Option' zurückgeben, oder 'log'kate, falls es nicht fatal ist. – Hauleth