A high-performance CLI zip/unzip utility for Windows built with Rust, miniz_oxide, and rayon for parallel compression.
- Multi-threaded file reading via
rayon - Pure-Rust
miniz_oxidedeflate backend — no native C deps, no CMake required - Buffered I/O throughout (
BufReader/BufWriter) - Recursive folder compression with
walkdir - Windows Explorer right-click context menu integration
- Single portable
.exe— no runtime required
win-zip/
├── src/
│ └── main.rs
├── Cargo.toml
├── install_context_menu.reg ← Double-click to install registry keys
├── Install-RustedZip.ps1 ← PowerShell alternative (recommended)
└── README.md
1. Install Rust (if not installed)
winget install Rustlang.Rustup
# or download from https://rustup.rsAfter installation, restart your terminal and verify:
rustc --version
cargo --version2. Install the MSVC target (required for Windows .exe)
rustup target add x86_64-pc-windows-msvcThe pure-Rust backend means no Visual Studio Build Tools or CMake are needed.
Standard release build (MSVC — recommended):
cargo build --release --target x86_64-pc-windows-msvcGNU toolchain alternative:
cargo build --release --target x86_64-pc-windows-gnuThe compiled binary will be at:
target\x86_64-pc-windows-msvc\release\rustedzip.exe
This is a fully self-contained, portable .exe — no DLLs or runtime needed.
Copy rustedzip.exe to:
C:\Tools\rustedzip\rustedzip.exe
You can also add this folder to your system PATH for CLI use anywhere:
[Environment]::SetEnvironmentVariable(
"Path",
$env:Path + ";C:\Tools\rustedzip",
[System.EnvironmentVariableTarget]::Machine
)Option A: PowerShell (recommended — supports custom paths)
Set-ExecutionPolicy Bypass -Scope Process# Run as Administrator
.\Install-RustedZip.ps1
# Custom exe location
.\Install-RustedZip.ps1 -ExePath "D:\bin\rustedzip.exe"
# Uninstall
.\Install-RustedZip.ps1 -UninstallStop-Process -Name explorer -Force; Start-Process explorerOption B: Registry file
- If you used a different path than
C:\Tools\rustedzip\, openinstall_context_menu.regin Notepad and replace every occurrence ofC:\\Tools\\rustedzip\\rustedzip.exewith your actual path (keep double backslashes). - Double-click
install_context_menu.reg→ click Yes when prompted.
rustedzip zip <file_or_folder> Compress a file or folder to .zip
rustedzip unzip <archive.zip> Extract a .zip archive
Aliases: compress / z and extract / x also work.
Examples:
rustedzip zip C:\Projects\my_app\
rustedzip zip C:\Reports\Q4.docx
rustedzip unzip C:\Downloads\release.zipOutput is placed in the same directory as the input:
my_app\→my_app.zipQ4.docx→Q4.ziprelease.zip→release\(folder)
| Setting | Value |
|---|---|
| Compression backend | miniz_oxide (pure Rust, no CMake) |
| Compression level | 6 (balanced speed/size) |
| Read buffer | 512 KB per file |
| Write buffer | 1 MB |
| Directory walker | walkdir (zero-copy iterator) |
| Parallelism | rayon thread pool (auto-sized to CPU cores) |
Typical speedup over PowerShell's Compress-Archive: 3–6× faster on multi-core machines.
flate2 = { version = "1.0" } # uses miniz_oxide by default
zip = { version = "2", default-features = false, features = ["deflate"] }
walkdir = "2"
rayon = "1"