本文比较全面比较了目前主流的 Rust 的 GUI 框架的表现。其中 ++ 表示非常好,-- 表示非常差,而 o 表示处于平均水平。
参与对比的框架共有 8 个,详细的比较结果如下:
| Electron + Neon | Electron + FFI | Electron + NodeJS Cpp Addon | Rust Program + Qt static | Rust program + Qt dynamic | Cpp program + Rust lib static + Qt static | Cpp program + Rust lib static + Qt dynamic | Gtk | |
|---|---|---|---|---|---|---|---|---|
| 易于构建 | ++ | ++ | + | -- | + | o | + | + |
| 构建性能 | ++ | ++ | ++ | -- | ++ | -- | ++ | o |
| 打包体积 | - | - | - | ++ | + | ++ | + | o |
| 易于部署 | ++ | ++ | ++ | + | o | + | o | - |
| Rust互操作性 | + | o | - | + | + | + | + | ++ |
| 开发速度 | ++ | + | - | + | -- | + | -- | - |
| 内存占用 | o | o | o | o | o | o | o | + |
| CPU占用 | - | - | - | ++ | ++ | ++ | ++ | ++ |
| 安全性 | o | o | o | + | + | + | + | + |
| 外观 | ++ | ++ | ++ | + | + | + | + | o |
| 响应式UI | ++ | ++ | ++ | o | o | o | o | - |
| 框架稳定性 | + | + | + | -- | -- | -- | -- | - |
| 平台支持 | + | + | + | ++ | ++ | ++ | ++ | + |
| 内建功能 | ++ | ++ | ++ | ++ | ++ | ++ | ++ | o |
| 第三方组件 | ++ | ++ | ++ | + | + | + | + | - |
| 调试 | ++ | ++ | ++ | o | o | o | o | o |
| 测试 | ++ | ++ | ++ | o | o | o | o | o |
| 社区 | ++ | ++ | ++ | + | + | + | + | - |
| 许可证 | ++ | ++ | ++ | o | o | o | o | ++ |
未参与测试的框架
以下框架没有在此次测试的范围之内,原因是我们觉得这些框架还没有足够成熟:
- Flutter desktop & flutter-rs: 不够成熟
- Relm: Gtk 衍生,外观看着不错
- Godot: 老旧笨拙
- Unity: 老旧笨拙
- Azul: 不够成熟
- Conrod: 不够成熟
- Druid: 不够成熟
- https://areweguiyet.com
- libui: 不够成熟
- Platform specific libraries: 不提供跨平台支持
- ImGUI: 不够成熟
- Sciter: 收费项目
- Web broswer communicating with a Rust local server: 老旧笨拙, 不安全? (DNS 重新绑定攻击) 以及不支持原生功能,如任务栏图标
最有希望的似乎是 Flutter。
排名
研究结果排名如下, 标准就是不让狗屎上榜: