Parallel, serial, and async DFS and BFS traversal iterators in Rust.
[dependencies]
par-dfs = "0"For usage examples, check the examples and documentation.
cargo run --example async_fs --features async -- --path ./
cargo run --example sync_fs --features sync,rayon -- --path ./cargo install cargo-criterion
# full benchmark suite
cargo criterion --features full
# sync benchmarks only
cargo criterion --features sync -- sync
# dfs benchmarks only
cargo criterion --features full -- dfsBenchmark reports are available here.
The rayon::iter::ParallelIterator implementation for the dynamically growing graph traversal is based on the amazing work in tavianator's blog post.
The implementation of futures_util::stream::Buffered also greatly helped in the design of the async streams.