Relm4:用 Rust 轻松构建跨平台应用
Relm4 makes developing beautiful cross-platform applications idiomatic
Relm4 让开发者能用纯 Rust 写出优雅且跨平台的图形界面应用。它采用 Elm 编程模型,配合 Rust 强大的类型系统,让代码既简洁又健壮。基于 GTK 构建,Relm4 原生支持 Windows、MacOS 和 Linux,无需额外运行时即可在裸机上运行。内置异步任务支持,模块化设计让组件可复用,文档完善且易上手。无论是追求开发效率还是代码可维护性,Relm4 都提供了理想的解决方案。
使用声明式语法,你可以轻松用纯 Rust 编写用户界面。
HN 评论区
41- slacknatcher12
看了文档,我发现很多内容和我自己用 Haskell 和 gi-gtk4 实现的方案非常相似。我想任何读过 https://bichanna.github.io/posts/tea-time/ 的人都会产生同样的想法。这基本上可以归纳为以下几点:
1. 使用原生组件系统,比如 GTK(我也评估过 Qt)。
2. 将组件包装成一个数据类型,该类型知道当 props/model 发生变化时如何更新组件。
3. 定义一个 dispatch 闭包并传递给组件,用于接收消息。组件上的操作应使用它,而不是直接修改引用。
4. 这个 dispatch 闭包是组件感知的,它会调用所有组件的 update 函数。
对于长时间运行的计算还有一些额外的复杂性,但这个模型是一个很好的构建基础。祝 relm 团队一切顺利,以后用 Rust 编程时我很可能会使用它。
- pitched
这是 Gnome/GTK,并不是我原本预期的那种跨平台方案。这是一种 Linux 优先的策略。虽然我很高兴我们现在处于这样的世界,但如果想在 Windows 上跑通构建,恐怕还是会非常头疼。如果并非如此,那向所有参与者表示巨大的祝贺!
- WD-42
我上一个项目用的是纯 gtk-rs,Rust 和 gobject 系统之间确实存在一些摩擦。我想下一个项目会试试 relm4。据说如果需要,随时可以回退到 gtk-rs。
- Nekorosu
它如何帮助构建符合习惯的跨平台应用?从定义上讲,跨平台应用很难做到“符合习惯”,因为不同平台在 API 和 UI 方面都有不同的习惯用法。如果该项目以某种方式解决了这个问题,我期望能看到相关说明。但我没在网站上找到这样的解释。
- ThrowawayTestr
为什么没有展示这个库有多“漂亮”的例子?