par-dfs

build status test status benchmarks crates.io docs.rs

Parallel, serial, and async DFS and BFS traversal iterators in Rust.

toml [dependencies] par-dfs = "0"

Usage

For usage examples, check the examples and documentation.

Examples

bash cargo run --example async_fs --features async -- --path ./ cargo run --example sync_fs --features sync,rayon -- --path ./

Documentation

bash RUSTDOCFLAGS="--cfg docsrs" cargo +nightly doc --all-features

Linting

bash cargo clippy --tests --benches --examples -- -Dclippy::all -Dclippy::pedantic

Benchmarking

```bash 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 -- dfs ```

Benchmark reports from CI are published are available here.

Acknowledgements

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.

TODO