#derive #proc-macro #dialoguer #prompt #dialog #dialoguer-trait

dialoguer_macro

基于 Dialoguer 库的派生宏。仅与 'dialoguer_trait' 一起使用。

3 个不稳定版本

0.2.0 2021 年 7 月 14 日
0.1.2 2021 年 7 月 14 日
0.1.1 2021 年 7 月 14 日

#7 in #dialoguer

每月 24 次下载
用于 dialoguer_trait

自定义许可协议

8KB
175

Dialoguer 特征

这是在 dialoguer 库上的简单包装特征。目标是去除构建交互式 CLI 应用时提供显式代码的需要。它包含一个巧妙的派生宏,可以将(几乎)任何结构体转换为命令提示配置。

用法

将 dialoguer_trait 添加到您的 Cargo.toml

[dependencies]
dialoguer_trait = "0.2.0" 

将特征导入您的命名空间,并将其派生到某些结构体上

use dialoguer_trait::Dialogue;

#[derive(Dialogue)]
struct Config {
    #[dialogue(prompt = "An option")]
    an_option: String,
    #[dialogue(prompt = "Please input a number")]
    number: isize,
    #[dialogue(prompt = "Are you having a good day?")]
    is_day_good: bool,
}

然后您只需要组合您的结构体

let config = Config::compose("Give me config... please!").unwrap();

用户注意事项

项目基本上是工作进展中。

您必须在结构体中的每个字段上添加 #[dialoguer] 属性,并且它们必须设置 prompt
在枚举上派生 Dialogue 需要 恰好一个未命名的 字段。
某些类型(例如 PathBuf、UUID、Uri)的支持仍然缺失。
不提供生成 CLI 的配置。
API 可能随时更改(我对特征方法名称并不完全确定)。

非常欢迎帮助。

依赖项

~1.5MB
~36K SLoC