rush (Rust + hash) is a simple yet efficient CLI tool to hash and compare datasets using Merkle trees written in Rust.
It can hash individual files, build full dataset Merkle trees, and compare two trees to spot differences.
Note
This is a toy project, built for fun and as a way to learn more about Rust.
It’s not meant for production use, but feel free to explore, tinker, or extend it. The core methods are reliable.
- 🔑 Hash a single file (
rush hash) - 🌳 Build a Merkle tree from a dataset (
rush build) - 🔍 Compare two datasets (
rush diff) – in progress - 🔌 Extensible design: new hashers can be added easily
git clone https://github.com/Nelsi11120/rush.git
cd rush
cargo build --releaseThe binary will be in target/release/rush
rush build ./my_dataset --num-workers 4rush build ./my_dataset --num-workers 4 --method blake3rush hash ./file.txtrush diff ./dataset_v1 ./dataset_v2- MD5 (default, fast)
- SHA-256
- BLAKE3 (recommended: very fast, secure)
- File hashing (
rush hash) - Build Merkle tree (
rush build) - Diff two datasets (
rush diff) - Support for BLAKE3 (
rush build --method blake3) - Support for SHA256 (
rush build -m sha256)
- Unit tests for commands
- Python bindings (PyPI wheel via pyo3/maturin)
- Benchmark hashing throughput
- Progress bar for hashing
- Shell completions (bash/zsh/fish)
- Add --quiet and --verbose modes
- Option to ignore hidden files or patterns
- Distribute binaries:
- Homebrew tap (
brew install rush) - Debian package + APT repo (
apt-get install rush)
- Homebrew tap (