Rust 将当前目录中的所有文件内容读取到向量

Rust 将当前目录中的所有文件内容读取到向量,rust,Rust,我想读取当前目录中的所有文件 以下是我的进展: 使用std::fs; fn main(){ 让files=fs::read_dir(“.”).unwrap(); 文件夹 .filter_映射(结果::ok) .filter(| d | if let Some(e)=d.path().extension(){e==“txt”}else{false}) .对于每一个(| f | println!(“{:?}”,f)); } 这里我有点迷路了,我怎么能读取所有的文件内容?我是否应该将它们添加到每个块

我想读取当前目录中的所有文件

以下是我的进展:

使用std::fs;
fn main(){
让files=fs::read_dir(“.”).unwrap();
文件夹
.filter_映射(结果::ok)
.filter(| d | if let Some(e)=d.path().extension(){e==“txt”}else{false})
.对于每一个(| f | println!(“{:?}”,f));
}

这里我有点迷路了,我怎么能读取所有的文件内容?我是否应该将它们添加到每个块的
中不断增长的
Vec
?如果是,那么如何使用?

如果您想要一个包含所有文件字节的单个vec,您可以使用

let target_ext = OsString::from("txt");
let files = fs::read_dir(".").unwrap();
let file_bytes : Vec<u8> = files
    .filter_map(Result::ok)
    .map(|d| d.path())
    .filter(|path| path.extension() == Some(&target_ext))
    .flat_map(|path| fs::read(path).expect("Failed to read"))
    .collect();

您想将
中每个文件的字节内容以任意顺序(无论
read\u dir
给您什么顺序)读入平面
Vec
?或者您希望它具有某种结构,例如跟踪哪些内容与哪个文件名匹配?另请参见:
flat\u map
ping一个
Vec
的迭代器将复制所有文件内容至少两次,并对分配器造成很大影响。最好对每个
使用
,并将每个文件读入一个
Vec
。另外,当您不知道
Vec
对应的文件时,
Vec
对我来说并不是非常有用;我会选择一个
HashMap
之类的东西(但是如果OP能够澄清所需的结果会更好)。
let file_bytes : Vec<Vec<u8>> = files
    .filter_map(Result::ok)
    .map(|d| d.path())
    .filter(|path| path.extension() == Some(&target_ext))
    .map(|path| fs::read(path).expect("Failed to read"))
    .collect();