2 个版本

0.1.1 2023 年 5 月 8 日
0.1.0 2023 年 5 月 8 日

#53 in #nested

MIT 许可协议

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。

未来

在未来,我计划向库中添加更多功能和自定义。如果您有任何想法,请随时告诉我。以下是我脑海中的一些想法:

  • 配置以设置默认的退出和后退按钮文本,自动处理输入和解析错误的回调等。
  • 由某些条件控制的动态菜单项。例如,我们希望根据用户是否登录来显示某些菜单项。

贡献

贡献和建议总是受欢迎的。请随时参与这个项目。

无运行时依赖