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日

#137GUI


用于 2 个包

GPL-3.0-or-later

43KB
726

pipeline coverage crates.io Docs rustc

gui

gui (简称 generic user interface) 是一个提供基本用户界面功能的包。它力求尽可能地独立于底层系统架构。也就是说,它与基于窗口和基于终端的系统兼容,并且不依赖于任何 GUI 工具包的具体细节。

这部分故事意味着它并不是您喜欢的用户界面工具包(例如:GTK+QtwxWidgets 等)的直接替代品,而应更多地被视为一个构建块,提供 UI 中常见的某些钩子和基本功能。事件分发到小部件的基础设施是一个例子。为了正确使用它,该包提供的功能需要与底层系统粘合。

gui 用于使用 Rust 探索用户界面架构设计空间的一部分。在 Rust 中设计 UI 系统通常被认为很难,并且在很大程度上是一个未解决的问题,尽管存在各种有希望的设计。

该包使用 Rust 的 async/await 进行易用的事件处理和小部件之间以及与小部件的消息传递,据作者所知,是第一个这样做。

功能

  • 完全独立于底层架构
    • 泛型于使用的事件和消息
    • 与任何渲染库兼容
  • async/await 基于的事件处理和消息传递支持
  • 除了 async-trait 之外没有其他依赖,以解决 Rust 当前的不足

状态

该包正在积极开发中,尽管其核心已经相当稳定了一段时间,但预计未来会有变化。

鉴于当前状态,预计 API 设计会有变化。

示例用法

notnow 程序依赖于 gui 包来创建其基于终端的 UI。基本工作原理可以在那里看到。

依赖项

~275–730KB
~17K SLoC