1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
use indicatif::{ProgressBar, ProgressStyle}; pub struct Spinner { progress_bar: ProgressBar, } impl Spinner { pub fn new(message: &str) -> Self { let spinner = Spinner { progress_bar: ProgressBar::new_spinner(), }; spinner.progress_bar.enable_steady_tick(120); spinner.progress_bar.set_style( ProgressStyle::default_spinner() .tick_strings(&[". ", ".. ", "...", " ..", " .", " "]) .template("{spinner:.white} {msg}"), ); spinner.progress_bar.set_message(message); spinner } } impl Drop for Spinner { fn drop(&mut self) { self.progress_bar.finish_and_clear(); } }