19 个版本
0.6.2 | 2024年1月30日 |
---|---|
0.6.0 | 2020年11月7日 |
0.5.0 | 2020年3月27日 |
0.4.0 | 2019年9月16日 |
0.0.0 | 2018年3月4日 |
#137 在 GUI 中
用于 2 个包
43KB
726 行
gui
gui (简称 generic user interface) 是一个提供基本用户界面功能的包。它力求尽可能地独立于底层系统架构。也就是说,它与基于窗口和基于终端的系统兼容,并且不依赖于任何 GUI 工具包的具体细节。
这部分故事意味着它并不是您喜欢的用户界面工具包(例如:GTK+、Qt、wxWidgets 等)的直接替代品,而应更多地被视为一个构建块,提供 UI 中常见的某些钩子和基本功能。事件分发到小部件的基础设施是一个例子。为了正确使用它,该包提供的功能需要与底层系统粘合。
gui 用于使用 Rust 探索用户界面架构设计空间的一部分。在 Rust 中设计 UI 系统通常被认为很难,并且在很大程度上是一个未解决的问题,尽管存在各种有希望的设计。
该包使用 Rust 的 async
/await
进行易用的事件处理和小部件之间以及与小部件的消息传递,据作者所知,是第一个这样做。
功能
- 完全独立于底层架构
- 泛型于使用的事件和消息
- 与任何渲染库兼容
async
/await
基于的事件处理和消息传递支持- 除了
async-trait
之外没有其他依赖,以解决 Rust 当前的不足
状态
该包正在积极开发中,尽管其核心已经相当稳定了一段时间,但预计未来会有变化。
鉴于当前状态,预计 API 设计会有变化。
示例用法
notnow
程序依赖于 gui 包来创建其基于终端的 UI。基本工作原理可以在那里看到。
依赖项
~275–730KB
~17K SLoC