4 releases (2 stable)

2.0.0 Jun 16, 2024
1.0.0 Jan 4, 2024
0.2.0 Sep 7, 2020
0.1.0 Aug 31, 2020

#73 in Asynchronous

Download history 12994/week @ 2024-04-05 12561/week @ 2024-04-12 12594/week @ 2024-04-19 14508/week @ 2024-04-26 11622/week @ 2024-05-03 15555/week @ 2024-05-10 10684/week @ 2024-05-17 11996/week @ 2024-05-24 17858/week @ 2024-05-31 19838/week @ 2024-06-07 10933/week @ 2024-06-14 12998/week @ 2024-06-21 17795/week @ 2024-06-28 19373/week @ 2024-07-05 13298/week @ 2024-07-12 9997/week @ 2024-07-19

62,967 downloads per month
Used in 34 crates (15 directly)

Apache-2.0

19KB
338 lines

Github CI docs.rs

async-walkdir

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 async runtimes tokio, async-std, smol and potentially any runtime based on futures 0.3

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.

Example

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,
        }
    }
});

Dependencies

~1.3–1.9MB
~35K SLoC