И ходить каталоги рекурсивно попробуйте использовать walkdir клеть (площадка):
extern crate walkdir;
use walkdir::WalkDir;
fn main() {
for e in WalkDir::new(".").into_iter().filter_map(|e| e.ok()) {
if e.metadata().unwrap().is_file() {
println!("{}", e.path().display());
}
}
}
См. Также раздел "Обратный путь в каталогах " в The Rust Cookbook.