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 模式
每月 85 次下载
在 4 crates 中使用
1.5MB
1.5K SLoC
包含 (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 以及更多.
dialogue-macro
是一款使用 Rust 语言设计的宏库,旨在无缝对接并增强 #[derive(Asker)]
和 #[derive(EnumAsker)]
) 将自定义结构体及枚举类型转换为功能完备的命令行询问器,从而依据预定义的字段或枚举成员进行高效的数据采集。
核心特性概览:
-
结构体与枚举支持: dialogue-macro 允许开发者通过派生宏 (
#[derive(Asker)]
和#[derive(EnumAsker)]
) 将自定义结构体及枚举类型转换为功能完备的命令行询问器,从而依据预定义的字段或枚举成员进行高效的数据采集。 -
嵌套式交互逻辑: 提供了对嵌套子询问器的支持,通过在结构体成员上标注
#[asker(SubAsker)]
属性,可实现多层次、递进式的用户交互过程,以应对不同场景下的深度信息获取需求。 -
主题定制能力: 支持主题设置,如示例中的
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