2 个版本
0.1.1 | 2023 年 5 月 8 日 |
---|---|
0.1.0 | 2023 年 5 月 8 日 |
#53 in #nested
18KB
285 行
MenuGenie
Rust 编程语言的多级终端菜单管理库。它提供了一个简单的构建器 API 来创建嵌套菜单。
用法
一个简单的示例应用程序 simple.rs
菜单操作
当用户选择菜单项时,可以执行几种菜单操作
- Back - 返回到上一个菜单
- BackToStart - 返回到第一个菜单
- Quit - 退出菜单
- Navigate - 导航到具有提供 id 的菜单
- Nothing - 在我们实际想要执行其他代码时使用。
当菜单遇到 Nothing 操作时,它将返回 Ok(Some((menu_id, menu_item_id)))
,这样我们就可以匹配返回的元组。请参阅 simple.rs 示例。
构建器
构建器从空菜单向量开始。
当我们调用 with_menu(id)
时,我们将另一个具有提供 id 的菜单插入。
with_menu_item(prompt, action)
添加一个具有提供消息和操作的通用菜单项。每个菜单项都有一个 id,当菜单项被添加到菜单时自动生成。当用户进行选择时,将使用该菜单项 id。 必须在添加任何菜单项之前存在菜单。
with_back_button()
添加一个具有文本 "Back"、操作 Back 和 id 0 的菜单项。
with_quit_button()
添加一个具有文本 "Quit"、操作 Quit 和 id 0 的菜单项。
注意 如果您想同时具有返回和退出按钮,您可以使用提供的 "快捷方式" 函数添加一个,其他使用
with_menu_item
函数。
当第一个菜单被添加时设置起始菜单 id,但可以使用 with_starting_menu
函数修改。
最后,要获取 MenuGenie
实例,只需调用 build
。
MenuGenie 结构
MenuGenie 结构体存储菜单和起始菜单 ID。它通过保存菜单 ID 的调用栈来工作。
它有两个用于运行菜单的功能
-
prompt
函数从调用栈中读取最后一个菜单 ID 并提示用户。也许我们开始了一个菜单并发生了错误,我们只需再次调用prompt
即可从刚刚显示的最后一个菜单继续。 -
restart
函数首先清除调用栈并将起始菜单 ID 放回调用栈上,然后调用prompt
。如果我们想从开始再次开始菜单,这非常有用。
注意 当我们在
MenuBuilder
上调用build
时,它将起始菜单 ID 放到调用栈上,因此我们可以直接调用 run。
未来
在未来,我计划向库中添加更多功能和自定义。如果您有任何想法,请随时告诉我。以下是我脑海中的一些想法:
- 配置以设置默认的退出和后退按钮文本,自动处理输入和解析错误的回调等。
- 由某些条件控制的动态菜单项。例如,我们希望根据用户是否登录来显示某些菜单项。
贡献
贡献和建议总是受欢迎的。请随时参与这个项目。