Crate throbber[−][src]
This crate serves as an alternative to loading. It is used to display a throbber animation in the terminal while other calculations are done in the main program.
Usage
Add this to your Cargo.toml:
[dependencies]
throbber = "0.1"
To display a throbber animation, first create a Throbber
object:
let mut throbber = Throbber::new();
You can also customize certain settings like the displayed animation and the displayed message:
let mut throbber = Throbber::new() .message("calculating stuff".to_string()) .frames(&throbber::MOVE_EQ_F); // this crate comes with a few predefined animations // see the Constants section
Then you can simply call start
wherever you want to start the animation and a finish function like success
where you want to stop it.
throbber.start(); // do calculations throbber.success("calculations successful!".to_string());
After which you can call start
or start_with_msg
again to start the animation again.
You can also change everything you could customize during the Throbber object creation, e. g. with change_message
and change_frames
. This also works while an animation is running.
If you don’t intend to start another animation, you should drop the Throbber object with end
. This action also ends the underlying thread:
throbber.end();
Examples
This is the example from the preview above:
use std::thread; use std::time::Duration; use throbber::Throbber; fn main() { let mut throbber = Throbber::new().message("calculating stuff".to_string()); throbber.start(); // do stuff thread::sleep(Duration::from_secs(2)); throbber.success("Success".to_string()); throbber.start_with_msg("calculating more stuff".to_string()); // do other stuff thread::sleep(Duration::from_secs(2)); throbber.fail("Fail".to_string()); throbber.end(); }
You can also keep track of progress with change_message
:
use std::thread; use std::time::Duration; use throbber::Throbber; fn main() { let mut throbber = Throbber::new() .message("Downloading file1 0%".to_string()) .frames(&throbber::ROTATE_F) .interval(Duration::from_millis(100)); throbber.start(); for i in 0..100 { throbber.change_message(format!("Downloading file1 {}%", i)); thread::sleep(Duration::from_millis(30)); } throbber.success("Downloaded file1".to_string()); throbber.start_with_msg("Downloading file2 0%".to_string()); for i in 0..69 { throbber.change_message(format!("Downloading file2 {}%", i)); thread::sleep(Duration::from_millis(30)); } throbber.fail("Download of file2 failed".to_string()); throbber.end(); }
Structs
Throbber | Representation of a throbber animation. It can start, succeed, fail or end at any point. |
Constants
CIRCLE_F |
|
DEFAULT_F |
|
MOVE_EQ_F |
|
MOVE_EQ_LONG_F |
|
MOVE_MIN_F |
|
MOVE_MIN_LONG_F |
|
ROTATE_F |
|