[−][src]Crate async_walkdir
An utility for walking through a directory asynchronously and recursively.
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.
Example
Recursively traverse a directory:
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, } } });
Do not recurse through directories whose name starts with '.':
use async_walkdir::{Filtering, WalkDir}; use futures_lite::future::block_on; use futures_lite::stream::StreamExt; block_on(async { let mut entries = WalkDir::new("my_directory").filter(|entry| async move { if let Some(true) = entry .path() .file_name() .map(|f| f.to_string_lossy().starts_with('.')) { return Filtering::IgnoreDir; } Filtering::Continue }); loop { match entries.next().await { Some(Ok(entry)) => println!("file: {}", entry.path().display()), Some(Err(e)) => { eprintln!("error: {}", e); break; } None => break, } } });
Re-exports
pub use async_fs::DirEntry; |
pub use std::io::Result; |
Structs
WalkDir | A |
Enums
Filtering | Sets the filtering behavior. |