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

截至 2026 年 4 月,Rust 写 GUI 最流行、社区最火、实际项目用得最多的是这 4 个egui、Tauri、Dioxus、Iced。下面按「流行度 + 新手友好 + 实际用途」给你讲清楚,帮你直接选。


一、综合流行度排名(2026 最新)

GitHub 星标 + crates.io 下载量 + 实际项目使用率

  1. egui(最火、纯 Rust 原生)

    • GitHub:2.8w+ ★
    • 下载量:1300 万 +(是 iced/slint 的 10 倍左右)
    • 定位:即时模式 GUI(Immediate Mode),纯 Rust、极简、超快
    • 适合:工具、调试面板、游戏内 UI、小工具、快速原型
    • 优点:上手最简单、零配置、编译快、体积极小(4--6MB)、跨平台
    • 缺点:复杂 UI / 动画 / 样式不如声明式框架舒服
  2. Tauri(Web 技术栈桌面化,替代 Electron)

    • GitHub:10w+ ★
    • 定位:WebView + Rust 后端(HTML/CSS/TS/Vue/React 写 UI,Rust 写逻辑)
    • 适合:企业应用、跨平台桌面软件、已有 Web 前端转桌面
    • 优点:比 Electron 轻 90%、体积 3--10MB、内存 50--100MB、安全、打包小
    • 缺点:依赖系统 WebView,不是纯 Rust 渲染
  3. Dioxus(全栈跨端,类 React)

    • GitHub:2.5w+ ★(增长极快)
    • 定位:一套代码 → Web + 桌面 + 移动端,RSX 语法(类 JSX)
    • 适合:全栈、Web / 桌面 / 移动三端、喜欢 React 风格的开发者
    • 优点:生态猛、热重载、状态管理强、性能好、纯 Rust 也可 WebView
    • 缺点:较新,部分原生能力不如 egui/iced 成熟
  4. 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 最新版桌面程序" }
        }
    }
}
相关推荐
Wadli2 小时前
Oncall Agent项目
开发语言
艾莉丝努力练剑2 小时前
【QT】Qt常用控件与布局管理深度解析:从原理到实践的架构思考
linux·运维·服务器·开发语言·网络·qt·架构
好大哥呀2 小时前
如何在Spring Boot中配置数据库连接?
数据库·spring boot·后端
杜子不疼.2 小时前
用 Python 实现 RAG:从文档加载到语义检索全流程
开发语言·人工智能·python
chao1898442 小时前
基于改进二进制粒子群算法的含需求响应机组组合问题MATLAB实现
开发语言·算法·matlab
lcj25112 小时前
字符函数,字符串函数,内存函数
c语言·开发语言·c++·windows
独特的螺狮粉2 小时前
古诗词飞花令随机出题小助手:鸿蒙Flutter框架 实现的古诗词游戏应用
开发语言·flutter·游戏·华为·架构·开源·harmonyos
cch89182 小时前
C++、Python与汇编语言终极对比
java·开发语言·jvm
Chockmans2 小时前
2026年3月青少年软件编程(Python)等级考试试卷(六级)
开发语言·python·青少年编程·蓝桥杯·pycharm·python3.11·python六级