35 个版本
0.9.14 | 2024 年 8 月 13 日 |
---|---|
0.9.13 | 2024 年 4 月 16 日 |
0.9.12 | 2024 年 1 月 7 日 |
0.9.10 | 2023 年 12 月 23 日 |
0.7.12 | 2022 年 7 月 7 日 |
#248 在 文本编辑器
7,741 每月下载次数
用于 10 个插件 (9 个直接使用)
190KB
3K SLoC
r3bl_rs_utils_core
上下文
R3BL TUI 库 及 为 开发 者 生 产 力 率 提 供 的 工 具 集
我们正在努力构建在 Rust 中具有丰富文本用户界面 (TUI) 的命令行应用程序。我们希望充分利用终端作为生产力场所,并为它构建各种出色的应用程序。
-
🔮 我们不仅仅构建一个应用程序,而是在构建一个库,以支持各种丰富 TUI 开发,并有所创新:将前端移动和 Web 开发世界中工作得非常好的概念重新构想为 TUI 和 Rust。
- 例如 React、JSX、CSS 和 Redux,但使所有内容都是异步的(它们可以通过 Tokio 并行和并发运行)。
- 甚至运行主事件循环的线程也不会阻塞,因为它也是异步的。
- 使用过程宏创建 DSL 来实现 CSS 和 JSX。
-
🌎 我们正在构建应用程序以增强开发者的生产力和工作流程。
- 这里的想法不是在 Rust 中重建 tmux(将多个进程复用到单个终端窗口)。而是构建一套集成的“应用程序”(或“任务”),在同一个进程中运行,渲染到单个终端窗口。
- 在这个终端窗口内部,我们可以实现“应用程序”切换、路由、平铺布局、堆叠布局等,以便我们可以管理在同一个进程中、同一个窗口中运行的许多紧密集成的 TUI 应用程序。因此,你可以想象所有的这些“应用程序”都共享应用程序状态(即 Redux 存储)。每个“应用程序”也可能有自己的 Redux 存储。
- 以下是我们要构建的“app”类型的一些示例
- 支持语法高亮的多人文本编辑器
- 与 GitHub issue 集成
- 与日历、电子邮件、联系人 API 集成
这些包提供了许多有用的功能,帮助您构建 TUI(文本用户界面)应用,同时还包含了所有 Rustaceans 🦀 都能享受的通用便利性和人体工程学 🎉
- 松散耦合且完全异步的 TUI 框架,使得在 Rust 中构建灵感来自 React、Redux、CSS 和 Flexbox 的复杂 TUI(文本用户界面应用)成为可能且简单。
- 线程安全且完全异步的 Redux 包(使用 Tokio 在单独的任务中运行订阅者和中间件)。归约函数是顺序执行的。
- 许多 声明性宏 和 过程宏(都像函数和 derive 一样工作)以避免为许多常见(且复杂)的任务编写大量样板代码。还有更安静的
Result
和Error
类型。 - 受内存区域启发的 非二叉树数据结构,线程安全并支持并行树遍历。
- 实用函数,用于提高 Rust 编程中常用模式的 人体工程学,范围从像为
stdout
、stderr
输出着色到懒值持有者。
了解更多关于这个库是如何构建的
🦜 关于这个包是如何制作的,以下是一些文章(在 developerlife.com 上)
- https://developerlife.com/2022/02/24/rust-non-binary-tree/
- https://developerlife.com/2022/03/12/rust-redux/
- https://developerlife.com/2022/03/30/rust-proc-macro/
🦀 您也可以在 developerlife.com 这里 找到所有与 Rust 相关的内容。
依赖于这个包的其他包
以下包是这个包的依赖项
由于过程宏需要放在单独的包中 的要求,这种将一个包分解为多个包的做法是必要的。
- 将一些代码放在一个单独的包中(
r3bl_rs_utils_core
),供其他包使用。 - 将过程宏放在一个单独的包中(
r3bl_rs_utils_macro
)。此包还依赖于r3bl_rs_utils_core
包。 - 最后,让“公共”包(
r3bl_rs_utils
)依赖于其他两个。
为了从“主要”r3bl_rs_utils
包的用户隐藏这种类型的分层,所有的模块都倾向于重新导出,使它们可以从“主要”或顶级包中可用;更多关于此的信息 这里。
许可证:Apache-2.0
依赖关系
~12–22MB
~211K SLoC