3 个版本

0.2.10 2022年3月15日
0.2.9 2022年3月3日
0.2.7 2022年2月25日

#554 in 命令行界面


ezmenu 使用

MIT 许可协议

77KB
1K SLoC

EZMenuLib

快速为您的 Rust CLI 程序设计菜单。

注意:此库尚未完全稳定。版本之间可能会有许多变化。我仍在寻找一个可持续的库设计。

此包提供包含结构体和特质的库,以轻松构建菜单。它包括用户输入的类型检查,以及格式化自定义。

如果您除了此包外还使用 structoptclap 包,此包非常有用,因此您可以安全地获取匹配项,并在之后构建自己的菜单。

它也可以用作模式选择,例如在游戏中。

注意

如果您想使用 derive(Menu) 宏,您必须使用 ezmenu 包。然而,此包可能包含 ezmenu 包中不可用的功能。

示例

以下是如何使用此库的示例

use ezmenulib::prelude::*;
use std::error::Error;

fn main() -> Result<(), Box<dyn Error>> {
    let mut my_menu = ValueMenu::from([
        Field::Value(ValueField::from("Give your name")),
        Field::Value(ValueField::from("Give a number")),
        Field::Select(SelectMenu::from([
            SelectField::from("0"),
            SelectField::from("1"),
            SelectField::from("2"),
        ])
        .title(SelectTitle::from("Select a number"))),
    ]);
    
    let name: String = my_menu.next_output()?;
    let number: i32 = my_menu.next_output()?;
    let amount: u8 = my_menu.next_output()?;
    
    println!("hello {}, you entered {} and you selected {}.", name, number, amount);
}

此示例代码打印出上述标准菜单

Hello there!
--> Give your name
>> Ahmad
--> Give a number
>> 1000
--> Select a number:
1 - 0
2 - 1
3 - 2
>> 2
hello Ahmad, you entered 1000 and you selected 2.

文档

您可以在 Docs.rs 上找到所有包文档。您还可以查看 示例 以通过实践学习。

进行中

此项目仍在开发中。您可以通过查看 EZMenu 项目 来查看我的待办事项列表 :D

依赖

~0–280KB