用Rust构建用户界面的现状
摘要
概述了用Rust构建图形用户界面的现状,重点介绍了Azul、Dioxus和CXX-Qt等可用框架和绑定,同时指出尚未出现成熟的、完全基于Rust的解决方案。
暂无内容
查看缓存全文
缓存时间: 2026/06/13 14:35
# 我们拥有 GUI 了吗?
来源:https://areweguiyet.com/
## 根基未深,但种子已播下。
作为一种底层语言,Rust 非常适合使用原生 API 以传统方式制作用户界面。然而,在当今的世界中,竞争通常意味着要支持多个平台,这使得使用原生 API 对许多人来说不再有吸引力。
Rust 的表现力和高级抽象使其非常适合构建复杂精密的用户界面。不幸的是,对于什么是最好的抽象,目前尚未形成广泛共识。
目前已有一些针对现有框架的绑定库,但那些寻找成熟、易用且完全基于 Rust 的解决方案的人,很可能发现自己并不走运。
在 Rust 中构建 GUI 的现行方法包括与 Electron 交互并使用 HTML(或基于 HTML 的框架)构建 GUI,而其他人则使用图形 API 和各种封装来模拟经典小部件。为 Servo 构建并可用于 Firefox Nightly 的跨平台并行渲染引擎 Webrender 采用了后一种方法,并且支持多平台,但它更像是 GUI 框架的基础,而非框架本身。
## 保持关注。(https://areweguiyet.com/newsfeed/)
以下是近期社区向本站提交的链接。如果你正在用 Rust 开发或撰写有关 GUI 的文章,请贡献内容!每条新闻条目都可以链接到你的博客、Reddit 帖子等。详情请参阅 README (https://github.com/areweguiyet/areweguiyet/blob/master/README.md)。
查看全部帖子 (https://areweguiyet.com/newsfeed/)
### Azul
[crate (https://crates.io/crates/azul)·repo (https://github.com/fschutt/azul)·docs (https://docs.rs/azul/latest/azul/)]Azul GUI 是一个免费、函数式、响应式的 GUI 框架,用于快速开发用 Rust 和 C 编写的桌面应用程序,采用 Mozilla WebRender 渲染引擎。
crates.io
### blinc
[crate (https://crates.io/crates/blinc_app)·repo (https://github.com/project-blinc/Blinc)·docs (https://project-blinc.github.io/Blinc)]Blinc 应用程序框架,具有简洁的布局和渲染 API。
crates.io
### cacao
[crate (https://crates.io/crates/cacao)·repo (https://github.com/ryanmcgrath/cacao)·docs (https://docs.rs/cacao/latest/cacao/)]AppKit(macOS/Airyx/GNUStep,beta)和 UIKit(iOS/tvOS,alpha)的 Rust 绑定。
crates.io
### core-foundation
[crate (https://crates.io/crates/core-foundation)·repo (https://github.com/servo/core-foundation-rs)·docs (https://docs.rs/core-foundation/latest/core-foundation/)]macOS 上 Core Foundation 的绑定。
crates.io
### Crux
[crate (https://crates.io/crates/crux_core)·repo (https://github.com/redbadger/crux/)·docs (https://redbadger.github.io/crux/)]使用 Rust 进行跨平台应用开发。
crates.io
### Cushy
[crate (https://crates.io/crates/cushy)·repo (https://github.com/khonsulabs/cushy)·docs (https://docs.rs/cushy/latest/cushy/)]一个由 wgpu 驱动的图形用户界面(GUI)库,具有响应式数据模型。
crates.io
### CXX-Qt
[crate (https://crates.io/crates/cxx-qt)·repo (https://github.com/KDAB/cxx-qt/)·docs (https://kdab.github.io/cxx-qt/book/)]CXX-Qt 是一个库,可自动生成代码,通过公共接口(例如可以直接暴露在 QML 中的 QObject)在 Rust 和 C++ 之间传输数据。它使用 cxx crate 实现 Rust 和 C++ 之间的安全交互。
crates.io
### Dioxus
[crate (https://crates.io/crates/dioxus)·repo (https://github.com/DioxusLabs/dioxus/)·docs (https://docs.rs/dioxus/latest/dioxus/)]优雅的类似 React 的库,用于构建桌面、Web、移动端、SSR、Liveview 等用户界面。
crates.io
### Dominator
[crate (https://crates.io/crates/dominator)·repo (https://github.com/Pauan/rust-dominator)·docs (https://docs.rs/dominator/latest/dominator/)]使用 FRP 信号的零成本、超高性能声明式 DOM 库。
crates.io
### egui
[crate (https://crates.io/crates/egui)·repo (https://github.com/emilk/egui)·docs (https://docs.rs/egui/latest/egui/)]一个易于使用的即时模式 GUI,可在 Web 和原生平台上运行。
crates.io
### Floem
[crate (https://crates.io/crates/floem)·repo (https://github.com/lapce/floem)·docs (https://docs.rs/floem/latest/floem/)]UI 库,旨在提供极致性能的同时,提供世界一流的开发者体验。来自 Lapce 代码编辑器的开发团队。
crates.io
### fltk
[crate (https://crates.io/crates/fltk)·repo (https://github.com/fltk-rs/fltk-rs)·docs (https://docs.rs/fltk)]FLTK crate 是一个跨平台的轻量级 GUI 库,可以静态链接以生成小巧、自包含且快速的二进制文件。
crates.io
### flutter_rust_bridge
[crate (https://crates.io/crates/flutter_rust_bridge)·repo (https://github.com/fzyzcjy/flutter_rust_bridge)·docs (https://docs.rs/flutter_rust_bridge/latest/flutter_rust_bridge/)]Flutter/Dart <-> Rust 绑定生成器,功能丰富,但无缝且简单。
crates.io
### Freya
[crate (https://crates.io/crates/freya)·repo (https://github.com/marc2332/freya)·docs (https://docs.rs/freya/latest/freya/)]由 Skia 驱动的跨平台非 Web GUI 库。
crates.io
### fui
[crate (https://crates.io/crates/fui_core)·repo (https://github.com/marek-g/rust-fui)·docs (https://github.com/marek-g/rust-fui/blob/master/doc/SUMMARY.md)]面向 MVVM(属性、可观察集合、绑定),ui! 宏,跨平台,渲染器无关,支持样式。
crates.io
### GPUI
[crate (https://crates.io/crates/gpui)·repo (https://github.com/zed-industries/zed)·docs (https://www.gpui.rs/)]一种混合即时模式与保留模式、GPU 加速的 UI 框架,旨在支持多种应用。
crates.io
### GTK 3
[crate (https://crates.io/crates/gtk)·repo (https://github.com/gtk-rs/gtk3-rs)·docs (https://gtk-rs.org/gtk3-rs/stable/latest/docs/gtk/)]未维护的 GTK+ 3 库的 Rust 绑定(请改用 gtk4)。
crates.io
### Iced
[crate (https://crates.io/crates/iced)·repo (https://github.com/iced-rs/iced)·docs (https://docs.rs/iced/latest/iced/)]一个专注于简洁和类型安全的 Rust GUI 库,渲染器无关。受 Elm 启发。
crates.io
### imgui
[crate (https://crates.io/crates/imgui)·repo (https://github.com/imgui-rs/imgui-rs)·docs (https://docs.rs/imgui)]Dear ImGui 的高级 Rust 绑定。
crates.io
### Kas
[crate (https://crates.io/crates/kas)·repo (https://github.com/kas-gui/kas)·docs (https://docs.rs/kas/)]对有状态 GUI 的现代方法:原生 Rust、可访问、可扩展。
crates.io
### kittest
[crate (https://crates.io/crates/kittest)·repo (https://github.com/rerun-io/kittest)·docs (https://docs.rs/kittest/latest/kittest/)]使用 AccessKit 进行自动化 GUI 测试。
crates.io
### Leptos
[crate (https://crates.io/crates/leptos)·repo (https://github.com/leptos-rs/leptos)·docs (https://docs.rs/leptos/latest/leptos/)]Leptos 是一个全栈、同构的 Rust Web 框架,利用细粒度响应式来构建声明式用户界面。
crates.io
### lvgl
[crate (https://crates.io/crates/lvgl)·repo (https://github.com/rafaelcaricio/lvgl-rs)·docs (https://docs.rs/lvgl/latest/lvgl/)]LVGL 的 Rust 绑定。一个强大且易用的嵌入式 GUI,具有许多小部件、高级视觉效果(透明度、抗锯齿、动画)和低内存要求(16K RAM、64K Flash)。
crates.io
### Makepad
[crate (https://crates.io/crates/makepad)·repo (https://github.com/makepad/makepad)·docs (https://docs.rs/makepad/latest/makepad/)]Makepad 是一个新的 VR、Web 和原生渲染 UI 框架。
crates.io
### masonry
[crate (https://crates.io/crates/masonry)·repo (https://github.com/linebender/xilem)·docs (https://docs.rs/masonry/latest/masonry/)]Masonry 工具包的 trait 和类型。
crates.io
### Pane UI
[crate (https://crates.io/crates/pane_ui)·repo (https://github.com/Avon662/pane_ui)·docs (https://docs.rs/pane_ui)]一个用户友好的、数据定义的即时模式 UI 系统。在 ron 中定义你的菜单。
crates.io
### Pax
[crate (https://crates.io/crates/pax-std)·repo (https://www.github.com/paxproject/pax)·docs (https://docs.rs/pax-std/latest/pax-std/)]用户界面语言和 2D 布局引擎,用于跨平台应用。
crates.io
### Ply
[crate (https://crates.io/crates/ply-engine)·repo (https://github.com/TheRedDeveloper/ply-engine)·docs (https://plyx.iz.rs/docs/getting-started/)]一个基于 macroquad 的应用引擎,具有即时模式 API 和简单的命令,支持跨平台。它具备可访问性、着色器、存储、类似 flexbox 的布局、调试视图等功能。
crates.io
### qmetaobject
[crate (https://crates.io/crates/qmetaobject)·repo (https://github.com/woboq/qmetaobject-rs)·docs (https://docs.rs/qmetaobject/latest/qmetaobject/)]一个框架,使每个人都能用 Rust 创建 Qt/QML 应用程序。它通过在编译时构建 QMetaObject,注册 QML 类型(可选地通过暴露 QQmlExtensionPlugin)并提供习惯性包装器来实现。
crates.io
### relm
[crate (https://crates.io/crates/relm)·repo (https://github.com/antoyo/relm)·docs (https://docs.rs/relm/)]基于 GTK+ 的异步 GUI 库,受 Elm 启发,用 Rust 编写。
crates.io
### Relm4
[crate (https://crates.io/crates/relm4)·repo (https://github.com/Relm4/Relm4)·docs (https://docs.rs/relm4/)]一个受 Elm 启发、基于 gtk4-rs 的习惯性 GUI 库。
crates.io
### Ribir
[crate (https://crates.io/crates/ribir)·repo (https://github.com/RibirX/Ribir)·docs (https://ribir.org/docs/introduction)]Ribir 是一个 Rust GUI 框架,帮助您从单一代码库构建漂亮的原生多平台应用程序。
crates.io
### Rinf
[crate (https://crates.io/crates/rinf)·repo (https://github.com/cunarist/rinf)·docs (https://rinf.cunarist.org/)]Rust 用于原生业务逻辑,Flutter 用于灵活漂亮的 GUI。
crates.io
### Rosin
[crate (https://crates.io/crates/rosin)·repo (https://github.com/sailbrush/rosin)·docs (https://docs.rs/rosin/latest/rosin/)]Rosin 是一个旨在极致易用的 GUI 库。
crates.io
### SDL3
[crate (https://crates.io/crates/sdl3)·repo (https://github.com/vhspace/sdl3-rs)·docs (https://docs.rs/sdl3/latest/sdl3/)]SDL3 的绑定,一个跨平台库,用于抽象平台特定细节以构建应用程序。
crates.io
### Slint
[crate (https://crates.io/crates/slint)·repo (https://github.com/slint-ui/slint)·docs (https://slint.dev/docs)]Slint 是一个工具包,用于高效开发适用于任何显示器的流畅图形用户界面:嵌入式设备和桌面应用程序。它带有快速的 OpenGL 渲染器、设计师友好的标记语言,并且是用 Rust 编写的。三重许可:GPLv3、免版税和商业许可。
crates.io
### Tauri
[crate (https://crates.io/crates/tauri)·repo (https://github.com/tauri-apps/tauri)·docs (https://tauri.app/)]Tauri 是一个框架,用于为所有主要桌面平台构建小巧、极快的二进制文件。
crates.io
### Tessera
[crate (https://crates.io/crates/tessera-ui)·repo (https://github.com/tessera-ui/tessera)·docs (https://docs.rs/tessera-ui/latest/tessera-ui/)]一个用于 Rust 的跨平台声明式与函数式 UI 库,专注于性能和可扩展性。
crates.io
### tinyfiledialogs
[crate (https://crates.io/crates/tinyfiledialogs)·repo (https://github.com/jdm/tinyfiledialogs-rs)·docs (https://docs.rs/tinyfiledialogs/latest/tinyfiledialogs/)]tinyfiledialogs C 库的高级 Rust 绑定。
crates.io
### undoredo
[crate (https://crates.io/crates/undoredo)·repo (https://github.com/mikwielgus/undoredo)·docs (https://docs.rs/undoredo)]使用增量、快照或命令在 Rust 中实现撤销/重做,并为许多标准类型和第三方类型提供了便捷实现。
crates.io
### WebRender
[crate (https://crates.io/crates/webrender)·repo (https://github.com/servo/webrender)·docs (https://docs.rs/webrender/latest/webrender/)]一个用于 Web 内容的 GPU 加速 2D 渲染器。
crates.io
### WinSafe
[crate (https://crates.io/crates/winsafe)·repo (https://github.com/rodrigocfd/winsafe)·docs (https://docs.rs/winsafe/latest/winsafe/)]以安全、习惯性的 Rust 编写的 Windows API 和 GUI。
crates.io
### wxDragon
[crate (https://crates.io/crates/wxDragon)·repo (https://github.com/AllenDang/wxDragon)·docs (https://docs.rs/wxDragon/latest/wxDragon/)]通过 wxDragon C 封装提供的 wxWidgets 的安全 Rust 绑定。
crates.io
### Xilem
[crate (https://crates.io/crates/xilem)·repo (https://github.com/linebender/xilem/)·docs (https://docs.rs/xilem/latest/xilem/)]一个用于响应式 UI 的实验性 Rust 架构。
crates.io
### Yew
[crate (https://crates.io/crates/yew)·repo (https://github.com/yewstack/yew)·docs (https://docs.rs/yew/)]一个用于创建可靠高效 Web 应用的框架。
crates.io
相似文章
后续更新:我的原生 Rust + Vulkan Transformer 训练后端——14 天后,现已通过 14 个架构的对等性验证并实现完整 PEFT
关于原生 Rust + Vulkan Transformer 训练后端的后续更新:目前有 14 个架构通过了基于固定版本 Hugging Face Transformers 参考实现的严格对等性验证全训练门槛,同时完整的 PEFT 工作流(LoRA、saved modules、适配器切换、精确恢复)已在 32 个架构层面得到验证。
重返备份:一周年回顾
Signal 介绍了其安全备份功能上线一年来的重大改进,包括跨平台(Android、iOS、Linux、macOS、Windows)端到端加密备份、本地/自选设备备份、存储优化以及付费备份附件的回填功能,随 iOS 8.30 版本全面推出。
三星新款 SmartTag 更小、续航更长,还能连接 iPhone
三星发布了 Galaxy SmartTag 3,这是一款更小巧、续航更长的蓝牙追踪器,支持 UWB 和蓝牙 6.0,并首次通过跨系统追踪信息共享功能兼容 iPhone。该产品将于 10 月 7 日在韩国上市,11 月初登陆美国,售价 29.99 美元。
OpenBSD的端口树保留GPL核心工具并拒绝uutils(Rust重写)
OpenBSD的端口树拒绝包含uutils-coreutils,这是GNU核心工具的Rust重写版本,原因是兼容性和许可问题,同时维持现有的基于GPL的GNU核心工具。
唯一直观的界面是乳头
本文追溯了'唯一直观的界面是乳头'这一引言的起源和出处,该引言通过强调只有像哺乳这样的先天体验才是真正直观的,而其他一切皆为习得,来批评科技界面中'直观'一词的滥用。