Asynchronous directory traversal for Rust.
Based on async-fs and blocking, it uses a thread pool to handle blocking IOs. Please refere to those crates for the rationale. This crate is compatible with any async runtime based on futures 0.3, which includes tokio, async-std and smol.
We do not plan to be as feature full as Walkdir crate in the synchronous world, but do not hesitate to open an issue or a PR.
use async_walkdir::WalkDir;
use futures_lite::future::block_on;
use futures_lite::stream::StreamExt;
block_on(async {
let mut entries = WalkDir::new("my_directory");
loop {
match entries.next().await {
Some(Ok(entry)) => println!("file: {}", entry.path().display()),
Some(Err(e)) => {
eprintln!("error: {}", e);
break;
},
None => break,
}
}
});