Loaders

A fully-featured, customisable progress bar and loading indicator library for Rust CLI applications, implemented with only the standard library.

Crates.io Docs.rs License: MIT CI

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_COLOR support.
  • Built-in themes for common terminal styles.
  • Draw throttling by position delta and redraw rate.
  • Hidden draw targets for tests and quiet mode.
  • Custom Write targets for captures and logs.
  • Thread-safe cloned progress bars.
  • Background steady ticking for spinners.
  • Reusable ProgressChars for 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");
}

Guides