23 releases (11 breaking)
0.11.0-beta | Feb 28, 2022 |
---|---|
0.9.1-beta | Feb 20, 2022 |
#703 in Command-line interface
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
'sFairMutex
- (adds some overhead but may fix some issues?)
- enables using
- 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