use progressing::{
bernoulli::Bar as BernoulliBar, clamping::Bar as ClampingBar, mapping::Bar as MappingBar,
Baring,
};
use std::{thread, time};
const SLEEP_MS: u64 = 20;
fn main() {
clamped();
println!();
mapped();
println!();
bernoulli();
}
fn clamped() {
let min_value = -80;
let max_value = 180;
println!(
"The bar is running from {} % to {} % clamping to [0, 1].",
min_value, max_value
);
println!(
"{}{}",
"Note the respective pause at the beginning and the end, ",
"which causes the approximated time to be too high."
);
let mut progress_bar = ClampingBar::new().timed();
for value in min_value..(max_value + 1) {
progress_bar.set(value as f32 / 100.0);
if progress_bar.has_progressed_significantly() {
progress_bar.remember_significant_progress();
println!("{}", progress_bar);
}
thread::sleep(time::Duration::from_millis(SLEEP_MS));
}
println!("{}", progress_bar);
}
fn mapped() {
let min_value = -10;
let max_value = 100;
let min_bar_border = -40;
let max_bar_border = 140;
println!(
"The bar is running from {} to {}, but maps [{}, {}] to [0, 1].",
min_value, max_value, min_bar_border, max_bar_border
);
println!("Note that the bar neither starts nor ends at the bar-borders.");
let mut progress_bar = MappingBar::with_range(min_bar_border, max_bar_border).timed();
for value in min_value..(max_value + 1) {
progress_bar.set(value);
if progress_bar.has_progressed_significantly() {
progress_bar.remember_significant_progress();
println!("{}", progress_bar);
}
thread::sleep(time::Duration::from_millis(SLEEP_MS));
}
println!("{}", progress_bar);
}
fn bernoulli() {
let min_value = -50;
let max_value = 120;
println!(
"The bar is running from {} to {} counting successes (if value is even) and attempts ({}).",
min_value,
max_value,
(max_value - min_value) + 1
);
println!("Note that the bar expects less successes than provided .");
let mut progress_bar = BernoulliBar::with_goal(60).timed();
progress_bar.set_len(60);
for value in min_value..(max_value + 1) {
let is_successful = value % 2 == 0;
progress_bar.add(is_successful);
if progress_bar.has_progressed_significantly() {
progress_bar.remember_significant_progress();
println!("{}", progress_bar);
}
thread::sleep(time::Duration::from_millis(SLEEP_MS));
}
println!("{}", progress_bar);
}