HOME> 世界杯比利时> rust 写gui 程序 最流行的是哪个

rust 写gui 程序 最流行的是哪个

截至 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 最新版桌面程序" }

}

}

}