我尝试从用户那里收集目录,然后将其传递给 WalkDir 以获取其中的所有文件,但它不起作用。当我对其进行硬编码时,相同的输入正在工作。我是在Windows系统上测试的。
这不起作用,只是不返回任何内容。
let mut some_dir = String::new();
io::stdin()
.read_line(&mut some_dir)
.expect("Invalid Input");
some_dir = some_dir.replace("\\", "\\\\");
for entry in WalkDir::new(&some_dir).into_iter().filter_map(|file| file.ok()) {
println!("{}", entry.path().display());
}
这有效
for entry in WalkDir::new("<dir>").into_iter().filter_map(|file| file.ok()) {
println!("{}", entry.path().display());
}
背后的原因是什么以及如何解决?
两个错误:
some_dir = some_dir.replace("\\", "\\\\");
毫无意义。删除它。some_dir
包含 \r\n
。通过调用 .trim()
将其删除:use std::io;
use walkdir::WalkDir;
fn main() {
let mut some_dir = String::new();
io::stdin().read_line(&mut some_dir).expect("Invalid Input");
some_dir = some_dir.trim().to_string();
dbg!(&some_dir);
for entry in WalkDir::new(&some_dir)
.into_iter()
.filter_map(|file| file.ok())
{
println!("{}", entry.path().display());
}
}