#animation #progress-bar #loading #command-line-interface #cli #command-line-utilities

cli-animate

用令人惊叹且易于实现的动画丰富您的Rust CLI

1 个不稳定版本

0.1.0 2023年10月24日

#1583 in 文本处理

MIT 许可证

17KB
275

cli-animate

cli-animate 是一个Rust crate,旨在 通过多种美观且易于使用的动画丰富命令行应用程序。它提供了一种简单的方法来集成视觉元素,例如进度条、交互式菜单等,从而增强您的CLI的交互性。

功能

进度条:使用可定制的动画进度条显示任务进度。
交互式菜单:通过直观、可键盘导航的菜单浏览选项。
加载指示器:显示加载指示器以显示您的应用程序正在运行。
样式可定制:使用颜色和字符定制动画的外观。
更多:该库旨在可扩展性,并包括各种其他工具以丰富您的CLI应用程序。

安装

cli-animate 添加到您的 Cargo.toml 文件依赖部分

[dependencies]
cli-animate = "0.1.0"

示例

交互式菜单:

interactive_menu.gif

use cli_animate::InteractiveMenu;

fn main() {
    let options = vec![
        "Tokyo".to_string(),
        "Saitama".to_string(),
        "Kanagawa".to_string(),
    ];

    let mut menu = InteractiveMenu::new(options.clone());

    // Run it!
    let selected_index = menu.run().unwrap(); // Returns the index of the user's selected option.

    println!("You selected: {}", options[selected_index]); // "You selected: Tokyo"
}

进度条:

progress_bar.gif

use cli_animate::{ProgressBar, StyleBuilder, Color};

fn main() {
    let progress_value = Arc::new(Mutex::new(0));

    // Create a clone of the progress_value for the other thread.
    let thread_progress_value = progress_value.clone();

    // Some work done in another thread.
    let do_some_work = thread::spawn(move || {
        let mut num = 0;
        while num <= 100 {
            thread::sleep(time::Duration::from_millis(20));

            let mut val = thread_progress_value.lock().unwrap(); // Update the progress value.
            *val = num;

            num += 1;
        }
    });

    // Initialize a progress bar.
    let style = StyleBuilder::new() // Customize the progress bar's style!
        .color(Color::Green)
        .bar_length(20)
        .build();
    let progress_bar = ProgressBar::new(0, 100, move || *progress_value.lock().unwrap(), style);

    let mut writer = std::io::stdout();

    // Start it!
    progress_bar.start(&mut writer);
    
    // Wait for the worker thread to finish.
    do_some_work.join().unwrap();
}

在存储库中的 examples/ 目录中查看更多 cli-animate 的使用示例。

许可证

本项目受 MIT 许可证许可 - 详细信息请参阅 LICENSE 文件。

感谢您使用 cli-animate 使您的命令行应用程序更具吸引力和互动性!

无运行时依赖