indra87g / ProgressBar
ProgressBar sederhana yang berkarat😹
UtilityRust
4 views
ProgressBar sederhana yang berkarat😹
use std::io::{self, Write};
pub struct ProgressBar {
total_size: u64,
current_size: u64,
bar_width: usize,
}
impl ProgressBar {
pub fn new(total_size: u64) -> Self {
Self {
total_size,
current_size: 0,
bar_width: 40,
}
}
pub fn update(&mut self, amount: u64) {
self.current_size = (self.current_size + amount).min(self.total_size);
let percentage = (self.current_size as f64 / self.total_size as f64) * 100.0;
let filled_len = ((self.current_size as f64 / self.total_size as f64) * self.bar_width as f64) as usize;
let empty_len = self.bar_width - filled_len;
let filled = "█".repeat(filled_len);
let empty = "░".repeat(empty_len);
print!("\r[{}{}] {:.2}% ({}/{})", filled, empty, percentage, self.current_size, self.total_size);
io::stdout().flush().unwrap();
}
pub fn finish(&self) {
println!("\nProcess complete.")
}
}