截至 2026 年 4 月,Rust 写 GUI 最流行、社区最火、实际项目用得最多的是这 4 个 :egui、Tauri、Dioxus、Iced。下面按「流行度 + 新手友好 + 实际用途」给你讲清楚,帮你直接选。
一、综合流行度排名(2026 最新)
按 GitHub 星标 + crates.io 下载量 + 实际项目使用率:
-
egui(最火、纯 Rust 原生)
- GitHub:2.8w+ ★
- 下载量:1300 万 +(是 iced/slint 的 10 倍左右)
- 定位:即时模式 GUI(Immediate Mode),纯 Rust、极简、超快
- 适合:工具、调试面板、游戏内 UI、小工具、快速原型
- 优点:上手最简单、零配置、编译快、体积极小(4--6MB)、跨平台
- 缺点:复杂 UI / 动画 / 样式不如声明式框架舒服
-
Tauri(Web 技术栈桌面化,替代 Electron)
- GitHub:10w+ ★
- 定位:WebView + Rust 后端(HTML/CSS/TS/Vue/React 写 UI,Rust 写逻辑)
- 适合:企业应用、跨平台桌面软件、已有 Web 前端转桌面
- 优点:比 Electron 轻 90%、体积 3--10MB、内存 50--100MB、安全、打包小
- 缺点:依赖系统 WebView,不是纯 Rust 渲染
-
Dioxus(全栈跨端,类 React)
- GitHub:2.5w+ ★(增长极快)
- 定位:一套代码 → Web + 桌面 + 移动端,RSX 语法(类 JSX)
- 适合:全栈、Web / 桌面 / 移动三端、喜欢 React 风格的开发者
- 优点:生态猛、热重载、状态管理强、性能好、纯 Rust 也可 WebView
- 缺点:较新,部分原生能力不如 egui/iced 成熟
-
Iced(声明式原生,Elm 风格)
- GitHub:1.9w+ ★
- 定位:纯 Rust 声明式 GUI,状态 - 消息 - 更新模型
- 适合:结构清晰、长期维护、中大型桌面应用
- 优点:架构干净、可维护性强、主题 / 国际化 /a11y 完善
- 缺点:学习曲线比 egui 陡、编译稍慢
2. Tauri(Web 前端转 Rust 桌面首选)
你会 Vue/React → 直接用 Tauri,体积小、安全、企业最爱。
- UI:Web 技术
- 逻辑:Rust
- 打包:单文件、极小、启动快
3. Dioxus(全栈 / 三端、React 爱好者)
一套代码跑 Web / 桌面 / 移动端,RSX 类 JSX,生态爆炸。 适合想一份代码多端复用的人。
4. Iced(大型原生应用、追求架构整洁)
纯 Rust 声明式、 Elm 架构、适合长期项目、可维护性最强。 适合做正式产品、复杂业务 GUI。
三、你(Rust 新手)该怎么选?
✅ 如果你:
-
刚学 Rust、想快速写小工具、计算器、配置器、调试面板 → 选 egui(最简单、最快、最稳)
-
会 Web(Vue/React)、想做跨平台桌面软件、要小体积 → 选 Tauri(上手成本最低、产出最快)
-
想一套代码 Web + 桌面 + 移动、喜欢 React 风格 → 选 Dioxus(未来潜力最大)
-
想纯 Rust、复杂原生 GUI、长期维护、架构干净 → 选 Iced(最工程化)
四、补充:其他常见框架(了解即可)
- Slint:轻量声明式,嵌入式 / 工业 GUI 很强,体积 5--9MB
- fltk-rs:老派 C++ FLTK 绑定,稳定、体积小、风格传统
- gtk-rs:GTK4 绑定,Linux 原生强,适合 GNOME 生态
- Druid:Xilem 前身,数据驱动,目前活跃度低
五、结论(一句话)
2026 年 Rust GUI:
- 纯 Rust 原生最流行:egui
- Web 技术栈最流行:Tauri
- 全栈跨端最火:Dioxus
- 大型原生应用:Iced
新手入门 → 直接从 egui 开始。
[package] name = "yuanyi" version = "0.1.0" edition = "2021" [dependencies] # 后端依赖(保留你原有的) axum = "0.7.5" tokio = { version = "1.0", features = ["full"] } sea-orm = { version = "0.12", features = [ "runtime-tokio-native-tls", "sqlx-mysql", "macros", "chrono", "serde_json" ] } chrono = { version = "0.4", features = ["serde"] } serde = { version = "1.0", features = ["derive"] } tower-http = { version = "0.5", features = ["cors"] } http = "1.0" # 🔥 关键:Dioxus 0.6 必须开启 desktop 特性! dioxus = { version = "=0.6.3", features = ["desktop"] } dioxus-desktop = "=0.6.3" # 配置两个二进制入口 [[bin]] name = "yuanyi" path = "src/main.rs" [[bin]] name = "testgui" path = "src/Testgui.rs"
Testgui.rs
rust
// 🌟 0.6 版本必须的导入
use dioxus::prelude::*;
use dioxus_desktop::launch;
// 🌟 主函数:程序入口(0.6 版本标准写法)
fn main() {
// 0.6 版本 launch 直接传组件函数,不需要任何额外参数
launch(app);
}
// 🌟 应用组件(0.6 版本必须小写:app)
fn app() -> Element {
// 0.6 版本直接返回 rsx!,不需要 cx.render
rsx! {
// 居中面板
div {
// 标题
h1 { "📦 Hello Dioxus 0.6! (Rust GUI)" }
// 按钮
button {
// 0.6 版本 onclick 标准写法
onclick: move |_| {
println!("✅ 按钮被点击了!");
},
"点我!"
}
// 示例:添加文本
p { "这是 Dioxus 0.6 最新版桌面程序" }
}
}
}