progression

Minimalistic (165 SLOC) and fast (updates are throttled) Rust progress bar.

00:00:05 475 / 1,000 [########################## ] 48% ETA 00:00:06 00:00:04 394 / 1,000 [=====================> ] 39% ETA 00:00:07

Dependencies are optional (disable with cargo add --no-default-features or default-features = false in Cargo.toml):

Example:

```rust use std::{thread, time::Duration};

fn main() { // Default for _ in progression::bar(0..1000) { thread::sleep(Duration::frommillis(1)); }

// Cargo style
for _ in progression::bar_with_config(0..1_000, progression::Config::cargo()) {
    thread::sleep(Duration::from_millis(1));
}

// Unicode style
for _ in progression::bar_with_config(0..1_000, progression::Config::unicode()) {
    thread::sleep(Duration::from_millis(1));
}

// Custom
for _ in progression::bar_with_config(0..1_000,
        progression::Config { style: progression::Style::Mono('·'), ..Default::default() }) {
    thread::sleep(Duration::from_millis(1));
}

// Manual
let items = vec![1, 2, 3, 4, 5];
let bar = progression::Bar::new(items.len() as u64,
    progression::Config { prefix: "(items) ", ..progression::Config::cargo() });

for _ in items {
    thread::sleep(Duration::from_millis(100));
    bar.inc(1);
}

} ```