我正在尝试编写一个返回PathBuf
s。
它尝试加载.gitignore
文件,但如果找不到,则只返回目录树中的所有文件。我正在使用gitignore和glob crates。
fn get_files(){
let pwd = env::current_dir().unwrap();
let gitignore_path = pwd.join(".gitignore");
let files = match gitignore::File::new(&gitignore_path) {
Err(_) => glob("**/*").expect("Failed to read glob pattern").map(|x| x.unwrap()),
Ok(g) => g.included_files().expect("Failed to read .gitignore").iter()
};
files.map(|p| pwd.join(p)).filter(|p| metadata(p).unwrap().is_file())
}
由于我正在映射glob的结果,因此推断的返回类型为std::iter::Map
和std::slice::Iter
。我知道Map是一个迭代器适配器但是如何将它转换为实现Iterator
的类型?