7 个稳定版本

新功能 3.0.0 2024 年 8 月 23 日
2.1.0 2022 年 3 月 26 日
1.2.0 2022 年 3 月 24 日

#307 in 命令行界面

Download history 143/week @ 2024-05-02 83/week @ 2024-05-09 113/week @ 2024-05-16 82/week @ 2024-05-23 142/week @ 2024-05-30 83/week @ 2024-06-06 104/week @ 2024-06-13 161/week @ 2024-06-20 75/week @ 2024-06-27 53/week @ 2024-07-04 72/week @ 2024-07-11 81/week @ 2024-07-18 106/week @ 2024-07-25 77/week @ 2024-08-01 98/week @ 2024-08-08 90/week @ 2024-08-15

379 每月下载量
用于 8 crates

GPL-3.0-or-later

18KB
230

🥬 spinach

Crates.io Docs.rs License CI

实用旋转效果,Rust — v3 现支持方法链式调用

安装

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

[dependencies]
spinach = "3"

用法

基本示例。

use spinach::Spinner;

fn main() {
    let s = Spinner::new("Cutting spinaches...").start();
    // Cut spinaches
    s.text("Cutting tomatoes...").update();
    // Cut tomatoes
    s.text("Vegetables cut").symbols(vec!["🔪"]).stop();
}

启动

use spinach::{Color, Spinner};

// With custom text
let s = Spinner::new("workin'...").start();

// With custom text, spinner, spinner speed and spinner color
let symbols = vec!["",""];
let s = Spinner::new("blip... blop...")
    .color(Color::Red)
    .symbols(symbols)
    .frames_duration(80)
    .start();

更新

use spinach::{Color, Spinner};

let s = Spinner::new("workin'...").start();

// Updating text
s.text("new text").update();

// Updating color
s.color(Color::White).update();

// Updating spinner symbols
s.symbols(vec!["", "", "", ""]).update();

// Updating spinner speed
s.frames_duration(80).update();

// Updating multiple at once
s.text("new text").color(Color::Red);

停止

use spinach::{Color, Spinner};

let s = Spinner::new("workin'...").start();

// Stop with final `✔` frame and green color.
s.text("gg!").success();

// Stop with final `✖` frame and red color.
s.text("ups").failure();

// Stop with final `⚠` frame and yellow color.
s.text("something may have happened?").warn();

// Stop with final `ℹ` frame and blue color.
s.text("notice").stop();

// Stop current spinner (sends update at the same time)
s.stop(); // freeze
s.text("spinach'd").symbols(vec!["🥬"]).stop(); // stop with the text "spinach'd" and a vegetable as the spinner

常见问题解答

如何避免在中断(Ctrl+C)时在终端上留下没有提示的情况?

您可以使用类似 ctrlc 的库来处理中断。

处理它的最基本方法是与这个库的 QoL show_cursor 函数结合使用,如下所示

use spinach::{show_cursor, Spinner};

fn main() {
    ctrlc::set_handler(|| {
        show_cursor();
        std::process::exit(0);
    })
    .expect("Error setting Ctrl-C handler");

    let s = Spinner::new("workin'...").start();
    // ...

灵感来自

无运行时依赖