Die Wahl scheint zwischen std::fs::PathExt
und std::fs::metadata
zu liegen, aber letzteres wird vorerst empfohlen, da es stabiler ist. Unten ist der Code, den ich mit gearbeitet haben, wie es die Dokumentation basiert weg ist:Wie überprüft man, ob ein Pfad existiert?
use std::fs;
pub fn path_exists(path: &str) -> bool {
let metadata = try!(fs::metadata(path));
assert!(metadata.is_file());
}
jedoch aus irgendeinem Grund let metadata = try!(fs::metadata(path))
noch die Funktion erfordert eine Result<T,E>
selbst zurückzukehren, obwohl ich nur einen boolean zurückgeben möchten, wie gezeigt von assert!(metadata.is_file())
.
Auch wenn es wahrscheinlich bald genug Änderungen geben wird, wie würde ich das try!()
Problem umgehen?
Im Folgenden finden Sie die entsprechenden Compiler-Fehler:
error[E0308]: mismatched types
--> src/main.rs:4:20
|
4 | let metadata = try!(fs::metadata(path));
| ^^^^^^^^^^^^^^^^^^^^^^^^ expected bool, found enum `std::result::Result`
|
= note: expected type `bool`
found type `std::result::Result<_, _>`
= note: this error originates in a macro outside of the current crate
error[E0308]: mismatched types
--> src/main.rs:3:40
|
3 | pub fn path_exists(path: &str) -> bool {
| ________________________________________^
4 | | let metadata = try!(fs::metadata(path));
5 | | assert!(metadata.is_file());
6 | | }
| |_^ expected(), found bool
|
= note: expected type `()`
found type `bool`
Haben Sie [diese Frage im Zusammenhang] (http://stackoverflow.com/questions/30555477/try-does-not-compile) über 'versuchen gesehen'!? Oder das [Rust Book] (https://doc.rust-lang.org/book/error-handling.html) Abschnitt zur Fehlerbehandlung? – Shepmaster