#spinner #terminal #loader #spin #cli

spinoff

简单易用的 Rust 库,用于在终端显示旋转指示器

13 个版本 (7 个破坏性更新)

0.8.0 2023 年 8 月 4 日
0.7.0 2023 年 1 月 29 日
0.6.0 2023 年 1 月 2 日
0.5.4 2022 年 9 月 11 日
0.5.3 2022 年 7 月 31 日

#59 in 命令行界面

Download history 1659/week @ 2024-04-12 1730/week @ 2024-04-19 1390/week @ 2024-04-26 1202/week @ 2024-05-03 1219/week @ 2024-05-10 1649/week @ 2024-05-17 1270/week @ 2024-05-24 1687/week @ 2024-05-31 1465/week @ 2024-06-07 1715/week @ 2024-06-14 1585/week @ 2024-06-21 1401/week @ 2024-06-28 1056/week @ 2024-07-05 1089/week @ 2024-07-12 1280/week @ 2024-07-19 937/week @ 2024-07-26

每月 4,523 次下载
用于 37 个 crate(直接使用 31 个)

MIT 许可证

49KB
728

spinoff

一个易于使用且健壮的库,用于在终端显示旋转指示器

Version Downloads Docs License Actions

🔨 安装

将依赖项添加到您的 Cargo.toml

[dependencies]
spinoff = "0.8.0"

⚡ 使用

use spinoff::{Spinner, spinners, Color};
use std::thread::sleep;
use std::time::Duration;

let mut spinner = Spinner::new(spinners::Dots, "Loading...", Color::Blue); 
sleep(Duration::from_secs(3));
spinner.success("Done!");

更新旋转指示器

use spinoff::{Spinner, spinners, Color};
use std::thread::sleep;
use std::time::Duration;

let mut spinner = Spinner::new(spinners::Aesthetic, "Loading...", Color::Red); 
sleep(Duration::from_secs(3));
spinner.update(Spinners::Dots2, "Retrying...", None);
sleep(Duration::from_secs(3));
spinner.stop()

指定输出流

use spinoff::{Spinner, spinners, Color, Streams};
use std::thread::sleep;
use std::time::Duration;

let mut spinner = Spinner::new_with_stream(spinners::Line, "Loading...", Color::Yellow, Streams::Stderr);
sleep(Duration::from_secs(3));
spinner.stop_and_persist("📜", "Task done.");

💫 旋转指示器

spinoff 默认包含 80 多种旋转指示器变体。所有旋转指示器变体都被视为可以启用或禁用的功能。为了方便使用,默认情况下都启用。要禁用/启用变体,您需要编辑您的 cargo.toml 文件。

[dependencies]
spinoff = { version = "0.8.0", features = ["dots", "arc", "line"] }

欢迎对新旋转指示器变体的建议。

创建您自己的旋转指示器

您可以使用 spinner! 宏创建自己的旋转指示器。

use spinoff::*;
use std::thread::sleep;
use std::time::Duration;

let frames = spinner!([">", ">>", ">>>"], 100);
let mut sp = Spinner::new(frames, "Hello World!", None);
sleep(Duration::from_millis(800));
sp.stop();

❗Windows 用户注意事项

为了正确显示颜色,您需要向您的代码中添加几行额外的代码。

use colored::control
control::enable_virtual_terminal(true).unwrap();

📖 文档

⚙ 示例

cargo run --example simple
cargo run --example stream
cargo run --example stop_and_persist

其他示例可以在 文档 中找到。

🚧 贡献

非常欢迎对该 crate 的任何贡献。如果您有任何想法/建议/错误修复,请打开一个 问题 或一个 拉取请求。如果您喜欢这个项目,请 在 GitHub 上 star 这个项目

📑 许可证

该项目受 MIT 许可证 的约束。

依赖项

~0–9.5MB
~43K SLoC