12个版本

0.2.7 2024年8月2日
0.2.6 2024年8月2日
0.2.4 2024年7月26日
0.2.0 2024年6月27日
0.1.3 2024年6月24日

#36 in #user-input

Download history 238/week @ 2024-06-03 2/week @ 2024-06-10 38/week @ 2024-06-17 364/week @ 2024-06-24 361/week @ 2024-07-01 93/week @ 2024-07-08 9/week @ 2024-07-15 102/week @ 2024-07-22 302/week @ 2024-07-29

512 每月下载
用于 vizer-cli

MIT 协议

705KB
402

Selthi

Latest Version Docs License

selthi 是一个用于构建交互式提示的库,灵感来自 inquire.

它提供两种提示,一种用于让用户从给定的列表中选择一个选项,可以显示每个选项的图片,另一种提示用于让用户输入一个字符串。

演示

Animated GIF making a demonstration of this library

源代码

示例

示例可以在 examples 目录中找到。运行它们以查看基本行为

cargo run --example images --features with_images

使用方法

将Selthi添加到您的依赖项中。

cargo add selthi

* 如果您想支持图片,请添加功能 with_images

selthi = { version = "0.2.7", features = ["with_images"] }

提示

目前支持两种不同的提示类型。

输入

Input 向用户显示一条消息,提示他们输入一些内容。然后,用户的输入被存储在String中,并返回给提示调用者。

let ans = Input::new("What's your name?").prompt();

match ans {
  Some(name) => println!("Hello {}!", name),
  None => println!("There was an error, please try again"),
}

Animated GIF making a demonstration of a simple prompt with Input created with this library.

选择

Select 提示适合于您需要用户从多个选项中选择一个的情况。

    let options: Vec<&str> = vec![
        "Rust",
        "C",
        "C++",
        "Javascript",
        "Java",
        "C#",
        "Python",
        "Haskell",
        "Lisp",
        "Erlang",
    ];
    let ans = Select::new("What's your favorite programming language?", options).prompt();

    match ans {
        Some(language) => println!("{} rocks!", language),
        None => println!("There was an error, please try again"),
    }

Animated GIF making a demonstration of a simple prompt with Input created with this library.

您还可以在用户选择选项时显示图片。

    let options: Vec<&str> = vec!["Linux", "Windows", "macOS"];
    let images: Vec<&str> = vec![
        "./examples/images/linux.png",
        "./examples/images/windows.png",
        "./examples/images/macos.png",
    ];

    let ans = Select::new("What's your favorite operating system?", options)
        .with_images(images)
        .without_help_message()
        .prompt();

    match ans {
        Some(os) => println!("{} is a good choice!", os),
        None => println!("There was an error, please try again"),
    }

依赖项

~0.8–6MB
~20K SLoC