Это простое тестовое приложение для отображения содержимого каталога:
fn main() {
let mut p = PathBuf::from(r"c:");
println!("drive 1: {}", p.to_str().unwrap());
p.push(std::path::MAIN_SEPARATOR.to_string());
println!("drive 2: {}", p.to_str().unwrap());
p.push(r"*.*");
println!("drive 3: {}", p.to_str().unwrap());
println!("root: {}", p.to_str().unwrap());
match fs::read_dir(p) {
Ok(x) => {
for path in x {
println!("path: {:?}", path);
}
}
Err(why) => {
println!("Error: {}", why);
}
};
}
Результат:
drive 1: c:
drive 2: c:\
drive 3: c:\\*.*
walk_dir: root: c:\\*.*
Error: The filename, directory name, or volume label syntax is incorrect. (os error 123)
println!
должны следить за прогрессом мой путь. Пожалуйста, простите имена переменных, так как я перенес оператор match
из функции, чтобы его было легче читать.
Когда я вырезал и вставил последний путь, c:\*.*
, в командную строку с помощью dir
, все работает как положено.
Я знаю, что дело не в содержимом строки, а в том, что я делаю.