23 releases (11 breaking)

0.11.0-beta Feb 28, 2022
0.9.1-beta Feb 20, 2022

#703 in Command-line interface

MIT license

38KB
758 lines

stati

Rust library for progress bars

WARNING

This crate is still in development, and although it should be fine to use, things may change at any time

Crate Features

  • fairness:
    • enables using parking_lot's FairMutex
    • (adds some overhead but may fix some issues?)
  • nightly:
    • enables using nighlty rust (generic_associated_types) for some extra optimizations

Installation

Add this line to your Cargo.toml

stati = "0.11.0-beta"

Usage

This is a simple example of how to create and progress a progress bar

use std::thread;

extern crate stati;

use stati::prelude::*;
use stati::BarManager;

let mut manager = BarManager::new();
let mut bar = manager.register(bars::SimpleBar::new(&"Working...", 100));
for i in 0..=100 {
    bar.bar().set_progress(i);
    manager.print();
    thread::sleep_ms(100);
}

To print text while using a progress bar, use the println and print macros like so

let mut manager = BarManager::new();
stati::println!(manager, "Made some progress");

Why?

Many progress bars that I have used in the past have suffered from issues such as not being able to have multiple bars at once, or not being able to print other messages while a bar was running. this crate aims to solve all of these issues, and generaly make it much nicer to use.

Lisence

MIT, see LICENSE

TODO's

  • add fun spini spinner wheeeeeeeeeeeeeeeeee
  • non-nightly support
  • add optional nightly features
  • add builder pattern support for making progress bars
  • multithreading!
  • windows support
  • improve docs
  • improve tests
  • improve examples
  • better iterator tracking
  • create bar style with string formatting like indicatif?
  • update to use Vec::drain_filter once it is stableized
  • make bars use better formatting

Dependencies

~0.4–5.5MB
~12K SLoC