如何从Map返回Iterator

时间:2017-01-02 14:56:20

标签: rust

我正在尝试编写一个返回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::Mapstd::slice::Iter。我知道Map是一个迭代器适配器但是如何将它转换为实现Iterator的类型?

0 个答案:

没有答案