diff options
Diffstat (limited to 'vendor/indicatif/examples/finebars.rs')
-rw-r--r-- | vendor/indicatif/examples/finebars.rs | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/vendor/indicatif/examples/finebars.rs b/vendor/indicatif/examples/finebars.rs new file mode 100644 index 0000000..dffb967 --- /dev/null +++ b/vendor/indicatif/examples/finebars.rs @@ -0,0 +1,43 @@ +use std::thread; +use std::time::Duration; + +use indicatif::{MultiProgress, ProgressBar, ProgressStyle}; +use rand::{thread_rng, Rng}; + +fn main() { + let styles = [ + ("Rough bar:", "█ ", "red"), + ("Fine bar: ", "█▉▊▋▌▍▎▏ ", "yellow"), + ("Vertical: ", "█▇▆▅▄▃▂▁ ", "green"), + ("Fade in: ", "█▓▒░ ", "blue"), + ("Blocky: ", "█▛▌▖ ", "magenta"), + ]; + + let m = MultiProgress::new(); + + let handles: Vec<_> = styles + .iter() + .map(|s| { + let pb = m.add(ProgressBar::new(512)); + pb.set_style( + ProgressStyle::with_template(&format!("{{prefix:.bold}}▕{{bar:.{}}}▏{{msg}}", s.2)) + .unwrap() + .progress_chars(s.1), + ); + pb.set_prefix(s.0); + let wait = Duration::from_millis(thread_rng().gen_range(10..30)); + thread::spawn(move || { + for i in 0..512 { + thread::sleep(wait); + pb.inc(1); + pb.set_message(format!("{:3}%", 100 * i / 512)); + } + pb.finish_with_message("100%"); + }) + }) + .collect(); + + for h in handles { + let _ = h.join(); + } +} |