#dialoguer # #命令行界面 #用户界面 #Rust

dialogue-macro

dialoguer 的扩展,简化了命令行交互界面

14 个版本

0.3.3 2024 年 7 月 8 日
0.3.2 2024 年 5 月 26 日
0.3.1 2024 年 3 月 16 日
0.2.5 2024 年 3 月 1 日
0.1.1 2023 年 11 月 26 日

#397 in Rust 模式

Download history 11/week @ 2024-05-18 191/week @ 2024-05-25 18/week @ 2024-06-01 5/week @ 2024-06-08 1/week @ 2024-06-15 1/week @ 2024-06-22 11/week @ 2024-06-29 112/week @ 2024-07-06 10/week @ 2024-07-13 85/week @ 2024-07-27

每月 85 次下载
4 crates 中使用

MIT 许可证

1.5MB
1.5K SLoC

JavaScript 630 SLoC // 0.1% comments Rust 514 SLoC // 0.2% comments Handlebars 299 SLoC // 0.0% comments

包含 (WOFF 字体, 60KB) source-code-pro-v11-all-charsets-500.woff2, (WOFF 字体, 45KB) open-sans-v17-all-charsets-300.woff2, (WOFF 字体, 41KB) open-sans-v17-all-charsets-300italic.woff2, (WOFF 字体, 45KB) open-sans-v17-all-charsets-600.woff2, (WOFF 字体, 43KB) open-sans-v17-all-charsets-600italic.woff2, (WOFF 字体, 45KB) open-sans-v17-all-charsets-700.woff2 以及更多.

GitHub Stars Crates.io

文档教程

dialogue-macro 是一款使用 Rust 语言设计的宏库,旨在无缝对接并增强 #[derive(Asker)]#[derive(EnumAsker)]) 将自定义结构体及枚举类型转换为功能完备的命令行询问器,从而依据预定义的字段或枚举成员进行高效的数据采集。

核心特性概览:

  1. 结构体与枚举支持: dialogue-macro 允许开发者通过派生宏 (#[derive(Asker)]#[derive(EnumAsker)]) 将自定义结构体及枚举类型转换为功能完备的命令行询问器,从而依据预定义的字段或枚举成员进行高效的数据采集。

  2. 嵌套式交互逻辑: 提供了对嵌套子询问器的支持,通过在结构体成员上标注 #[asker(SubAsker)] 属性,可实现多层次、递进式的用户交互过程,以应对不同场景下的深度信息获取需求。

  3. 主题定制能力: 支持主题设置,如示例中的 dialogue_macro::ColorfulTheme,使得开发者能够根据实际需要选择和应用不同的视觉风格,提升命令行提示界面的用户体验和可读性。

快速开始

首先通过 cargo 添加 dialogue-macro 依赖

cargo add dialogue-macro

然后在您的 Rust 代码中导入该 crate

use dialogue_macro::Asker;

接下来,使用 #[derive(Asker, Debug)] 宏为需要交互式输入的结构体派生相关 trait

#[derive(Asker, Debug)]
struct User {
    #[input(prompt = "请输入您的名字:")]
    name: String,
    age: u32,
}

#[derive(Asker)]会自动为结构体实现asker()构造器方法。对于带有#[input(prompt = "...")]属性的字段,您可以直接调用同名方法(无需再传入提示文本作为参数)。

最后,使用派生的方法链式调用来获取用户输入

fn main() {
    let user = User::asker()
        .name()
        .age("请输入您的年龄:")
        .finish();

    println!("{:?}", user);
}

依赖关系

~0.9–8MB
~59K SLoC