Cushy
Cushy是Rust编程语言的一个实验性图形用户界面(GUI)crate。它具有响应式数据模型,旨在轻松创建响应迅速、高效的用户界面。为了实现简便的跨平台开发,Cushy使用了自己的一套风格一致的Widget
集合。
Cushy由以下技术驱动:
Kludgine
,一个2D图形库,由以下技术支持:winit
用于窗口/输入wgpu
用于图形cosmic_text
用于文本布局和栅格化
palette
用于基于OKLab的HSL颜色计算arboard
用于剪贴板支持figures
用于基于整数的2D数学计算
Cushy入门
Widget
特征是Cushy的构建块:每个用户界面元素都实现了Widget
。Widget
特征文档概述了Cushy的工作原理。内置小部件列表可以在cushy::widgets
模块中找到。
Cushy使用响应式数据模型。要了解响应式数据模型的工作原理,请考虑这个示例,它显示了一个自增标签的按钮:
fn main() -> cushy::Result {
// 创建一个动态usize
let count = Dynamic::new(0_isize);
// 创建一个新标签显示`count`
count
.to_label()
// 将标签用作按钮的内容
.into_button()
// 设置`on_click`回调为一个递增计数器的闭包
.on_click(move |_| count.set(count.get() + 1))
// 运行应用程序
.run()
}
以下是了解更多Cushy信息的方法:
-
浏览示例目录。Cushy中几乎每个功能最初都是通过创建示例来测试的。许多示例专注于演示单一功能,但也有一些复杂的示例,如主题编辑器/预览器:
-
浏览用户指南。用户指南正在编写中,但为其示例提供了CI生成的截图和动画:
项目状态
该项目处于早期开发阶段,但正迅速成为一个不错的框架。目前被视为alpha版本且不受支持,主要关注点是@ecton将其用于自己的项目。功能请求和错误修复将根据@ecton自身需求进行优先排序。
如果您想贡献,我们始终欢迎错误修复。在开发新功能之前,请提出issue提议该功能及其旨在解决的问题。这样做有助于避免合并拉取请求时的摩擦,因为它确保了更改符合维护者对Cushy的愿景。
开源许可
本项目与Khonsu Labs的所有项目一样,都是开源的。 本仓库可在MIT许可证或Apache许可证2.0下使用。
要了解更多关于贡献的信息,请参阅CONTRIBUTING.md。