items
のstd::fs::read_dir()
の関数から返されたio::Result<DirEntry>
を処理しようとしています。私の関心は、私はまた、次の取り扱いio :: Result <DirEntry> Errで返品なし
let files = match fs::read_dir(&dir_path) {
Ok(items) => items,
Err(_) => return Err("Cannot read directory items".to_string()),
};
for item in files {
let file: DirEntry; // I get compile error for use of possibly uninitialized `file`
match item {
Ok(de) => file = de,
Err(_) => println!("{:?} cannot be accessed", item),
};
//do somthing with file
}
たぶん例でmatch
を使用せずにResult
を処理するためのより良い方法があるがしようとしたときOk
let files = match fs::read_dir(&dir_path) {
Ok(items) => items,
//I actually want to leave function if there is an error here
Err(_) => return Err("Cannot read directory items".to_string()),
};
for item in files { // item: io::Result<DirEntry>
match item {
Ok(de) => de,// how to get `de` out of this scope??
//here I just want to print error and loop for next item
Err(_) => println!("{:?} cannot be accessed", item),
};
//do something with `de`
}
Result
からmatch
を適用するときDirEntry
の値を取得する方法ですこのような? match
外で変数を宣言
それは私が行うことができます知っている ' – wimh
、あなたがその範囲の外にそれを取得する必要はありませんように、あなたは' OK(デ)=> {/ *ドで何かをする* /}を行うことができます見えますこれは可能な限り入れ子にならないようにしたいと思います。 – MusuNaji