6 个版本
0.2.0 | 2023 年 12 月 28 日 |
---|---|
0.1.3 | 2023 年 12 月 20 日 |
0.0.0-reserved.0 | 2021 年 5 月 12 日 |
#126 在 GUI
每月 72 次下载
2.5MB
19K SLoC
Cushy
此 crate 已从 gooey
重命名为 cushy。不再以该名称发布新版本。
Cushy 是 Rust 编程语言的实验性图形用户界面(GUI)crate。它具有反应式数据模型,旨在轻松创建响应式、高效的用户界面。为了实现跨平台开发的便捷性,Cushy 使用其自己的样式一致的 Widget
集合。
Cushy 驱动于
Kludgine
,一个由winit
驱动的 2d 图形库- 用于窗口/输入
wgpu
用于图形cosmic_text
用于文本布局 + 光栅化
palette
用于基于 OKLab 的 HSL 颜色计算arboard
用于剪贴板支持figures
用于基于整数的 2d 数学
开始使用 Cushy
Widget
trait 是 Cushy 的构建块:每个用户界面元素都实现了 Widget
。有关 Cushy 的工作原理,请参阅 Widget
trait 的 文档。内置 widget 的列表可以在 cushy::widgets
模块中找到。
Cushy 使用反应式数据模型。要了解反应式数据模型的工作原理,请考虑以下示例,该示例显示一个按钮,该按钮增加其自己的标签
fn main() -> gooey::Result {
// Create a dynamic usize.
let count = Dynamic::new(0_isize);
// Create a dynamic that contains `count.to_string()`
let count_label = count.map_each(ToString::to_string);
// Create a new button whose text is our dynamic string.
count_label
.into_button()
// Set the `on_click` callback to a closure that increments the counter.
.on_click(move |_| count.set(count.get() + 1))
// Run the application
.run()
}
探索 示例目录 是了解 Cushy 的好方法。Cushy 中的几乎所有功能最初都是通过创建示例来测试的。
项目状态
此项目处于早期开发阶段,但正在迅速成为一个不错的框架。目前被视为alpha版本且不受支持,@ecton的主要关注点是将其用于自己的项目。功能请求和错误修复将根据@ecton的需求进行优先排序。
如果您想贡献,错误修复总是受欢迎的。在开发新功能之前,请打开一个问题,提出该功能及其旨在解决的问题。这样做将有助于避免合并拉取请求时的摩擦,因为它确保更改符合维护者对Cushy的愿景。
开源许可
此项目,如Khonsu Labs的所有项目一样,是开源的。此存储库可在MIT许可或Apache许可证2.0下获得。
有关更多贡献信息,请参阅CONTRIBUTING.md。
依赖项
~23–61MB
~1M SLoC