zzz 0.1.0

Fast progress bar with sane defaults
Documentation

💤

Crates.io docs.rs MIT licensed Apache 2.0 licensed

The progress bar with sane defaults that doesn't slow down your loops. Inspired by tqdm.

[dependencies]
zzz = { version = "0.1" }

Features

  • Practical defaults
  • Seamless integration with iterators and streams
    • If possible, zzz infers the target size from size_hint()
  • Automagically determines and updates a good printing frequency
  • Very low overhead: doesn't slow down your loop, pretty much no matter how simple the loop body. On average a ...
    • !Sync progress bar update is 4 instructions (on average, 3 CPU cycles on Skylake)
    • Sync progress bar update is also 4 instructions (on average, 38 CPU cycles on Skylake)

Cargo Features

  • streams: Enables support for .progress() on async streams (futures::streams::Stream)

Usage examples

Adding a progress bar to an iterator:

use zzz::ProgressBarIterExt as _;

//                             vvvvvvvv
for _ in (0..1000).into_iter().progress() {
    // ...
}

Manually creating and advancing a progress bar:

use zzz::ProgressBar;

let mut pb = ProgressBar::with_target(1234);
for i in 0..1234 {
    // ...
    pb.add(1);
}