自打我有了一个写UncodeIDE的小目标之后,我开始寻找一些适用于Rust语言的GUI框架。对于未来而言,基于Rust语言写GUI提供了大量的优点。
浏览器环境。在进程分离的架构下,意味着我们可以用Rust写GUI后端,用于提供语言服务等;Rust写前端则可以编译为WebAssembly,以更好的性能在浏览器上运行。
本地运行。没啥说的,怎么地也不如再有的GUI框架做得好。
移动设备上运行。就是想想,说不定还能实现。
于是,在我这一个月的努力之下,我尝试了三个不同风格的RustGUI框架:终于总算是勉强能跑起来了。顺便一提,这三个框架都不是稳定版本,功能都不够完善。
唯一值得称道的一点是,我写这篇文章用的工具用的是其中的Druid框架写的Print编辑器吧。它可以稳定的运行着,虽然功能还不够完善,但是勉强可以用起来。
而且,从输入的效果来看,输入的响应速度还是相当不错的——毕竟在没有各种智能+智障提醒的情况下,它不会有多慢。
混合框架Tauri为了方便于开发,我开始我假设Uncode是运行在浏览器环境的,所以呢,我就找了Electron的替代器Tauri。
Tauri走的是古老的混合应用框架Cordova的思路,通过调用系统默认的WebView来作为环境。想想,还是很美好的,所以我尝试了使用Tauri运行了第一个hello,world。然后试着,加了几个功能,也是勉强能接受的,直到我需要一个多窗口的功能,发现没有。
于是,我去GitHub上了解了一下情况,看了一眼Todo:
FramelessMode(