5 个版本
0.1.4 | 2021 年 2 月 28 日 |
---|---|
0.1.3 | 2021 年 2 月 28 日 |
0.1.2 | 2021 年 2 月 26 日 |
0.1.1 | 2021 年 2 月 26 日 |
0.1.0 | 2021 年 2 月 25 日 |
#6 in #done
每月下载 76 次
在 3 个crate中使用
21KB
191 行
Throbber
此crate作为loading的替代品。它用于在终端中显示闪烁器动画,同时主程序中执行其他计算。
用法
将此添加到您的 Cargo.toml 中
[dependencies]
throbber = "0.1"
要显示闪烁器动画,首先创建一个Throbber
对象
let mut throbber = Throbber::new();
您还可以自定义某些设置,例如显示的动画和显示的消息
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
然后您可以在任何需要开始动画的地方调用 start
,并在想要停止动画的地方调用类似success
的函数。
throbber.start();
// do calculations
throbber.success("calculations successful!".to_string());
之后,您可以再次调用 start
或 start_with_msg
来再次开始动画。您还可以在Throbber对象创建期间更改您可以自定义的所有内容,例如使用change_message
和 change_frames
。这也可以在动画运行时进行。
如果您不打算启动另一个动画,应使用 end
丢弃Throbber对象。此操作还会结束底层线程
throbber.end();
示例
这是上面预览中的示例,可以使用 cargo run --example calculation
运行
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();
}
您还可以使用 change_message
跟踪进度。这可以通过 cargo run --example download
运行
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();
}