我正在尝试获取目录中第一个条目的路径,但似乎
read_dir
响应类型 ReadDir
是一个迭代器,无法索引,例如
fn get_single_file_or_none(dir_path: &PathBuf) -> Result<Option<PathBuf>, io::Error> {
let entries = fs::read_dir(dir_path)?;
if entries.count() == 1 {
let path = entries[0].path();
// ^^ cannot index into a value of type `std::fs::ReadDir`
return Ok(path);
}
return Ok(None);
}
如何获取目录中第一个(在本例中是唯一一个)条目的路径?
我无法开始迭代条目,因为我知道只有一个条目,并返回我点击的第一个条目。这是唯一的解决方案吗?例如
if entries.count() == 1 {
for entry_res in entries {
return match entry_res {
Err(er) => Err(er),
Ok(en) => Ok(Some(en.path())),
};
}
}
next()
即可获取第一个条目,如果没有条目,则调用 None
。不需要打电话count()
。
use std::{fs, io, path::PathBuf};
fn get_single_file_or_none(dir_path: &PathBuf) -> io::Result<Option<PathBuf>> {
let mut entries = fs::read_dir(dir_path)?;
if let Some(entry) = entries.next() {
return Ok(Some(entry?.path()));
}
return Ok(None);
}