Loaders
A fully-featured, customisable progress bar and loading indicator library for Rust CLI applications, implemented with only the standard library.
Features
- Progress bars with known or unknown totals.
- Spinners with built-in frame presets.
- Multi-progress rendering for concurrent work.
- Iterator integration with automatic length detection.
- Human-readable ETA, elapsed time, and rate values.
- Byte formatting and byte throughput templates.
- Custom templates parsed once and reused.
- Custom template keys for application-specific labels.
- ANSI colors with
NO_COLORsupport. - Built-in themes for common terminal styles.
- Draw throttling by position delta and redraw rate.
- Hidden draw targets for tests and quiet mode.
- Custom
Writetargets for captures and logs. - Thread-safe cloned progress bars.
- Background steady ticking for spinners.
- Reusable
ProgressCharsfor custom progress bar shapes. - Status-aware templates with
{status},{remaining},{ratio}, and compact counts. - Spinner helpers for success, failure, warning, and informational endings.
- 27 built-in spinner and loading frame presets.
Install
cargo add loaders
[dependencies]
loaders = "0.0.0"
Four-Line Progress Bar
#![allow(unused)] fn main() { use loaders::ProgressBar; let pb = ProgressBar::new(100); pb.inc(50); pb.finish_with_message("done"); }