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

Download history 19/week @ 2024-03-20 20/week @ 2024-03-27 30/week @ 2024-04-03 7/week @ 2024-04-10 13/week @ 2024-04-17 21/week @ 2024-04-24 12/week @ 2024-05-01 17/week @ 2024-05-08 16/week @ 2024-05-15 14/week @ 2024-05-22 20/week @ 2024-05-29 15/week @ 2024-06-05 19/week @ 2024-06-12 34/week @ 2024-06-19 21/week @ 2024-06-26

每月下载 76 次
3 个crate中使用

MIT 许可证

21KB
191

Throbber

Crates.io docs.rs GitHub last commit License

此crate作为loading的替代品。它用于在终端中显示闪烁器动画,同时主程序中执行其他计算。

Throbber Preview

用法

将此添加到您的 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());

之后,您可以再次调用 startstart_with_msg 来再次开始动画。您还可以在Throbber对象创建期间更改您可以自定义的所有内容,例如使用change_messagechange_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();
}

无运行时依赖