#derive #proc-macro #macro-derive

已删除 dialoguer-derive

基于 Dialoguer crate 的派生宏。仅与 'dialoguer-trait' 一起使用。

0.1.1 2020年11月18日
0.1.0 2020年11月18日

#15 in #procmacro

自定义许可

7KB
144

Dialoguer 特性

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

使用方法

将 dialoguer-trait 添加到您的 Cargo.toml 中

[dependencies]
dialoguer-trait = "0.1.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();

对最终用户的说明

项目基本上是 WIP。

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

非常感谢帮助。

依赖关系

~1.5MB
~37K SLoC