热榜
#开发工具

emilk/egui

给需要界面的 Rust 开发者,尤其是游戏和工具内嵌 UI 场景,一个跨桌面与 Web 的即时模式 GUI 库。

31,717
2,244
Rust
Apache-2.0
上线 7 年

解决什么问题

写 Rust 工具、调试面板或游戏编辑器时,界面是最麻烦的一段:GTK、Qt、Win32 这类原生工具包接进 Rust 渲染循环很不顺,而且基本不考虑浏览器;走 Web 技术栈又要把工程拆成两种语言、两套构建。egui 的做法是让你每帧用一个 Rust 函数描述界面,产出一份三角形网格交给现有的渲染器,因此桌面、wasm 和嵌进游戏引擎可以是同一份代码。

有什么不同

它是即时模式,属于 imgui 这一路:没有要反复增删的控件树,没有回调和数据同步,你读状态、发出控件,一次跑完。和 GTK、Qt 这类保留式桌面工具包相比,代价是放弃原生外观和系统集成,换来可移植性和几乎为零的胶水代码。真正有辨识度的工程取舍是:核心库禁用 unsafe,默认依赖很少,且与渲染器解耦——只输出网格,由官方集成用 wgpu、glow 或你已有的游戏引擎绘制。反过来说,即时模式每帧都要重跑布局与绘制,也不适合层级很深、数据量很大的复杂界面。

适合谁

用 Rust 写开发者工具、游戏编辑器、调试/检视浮层、内部小面板,或者希望同一份代码同时出桌面端和 wasm 网页端的人。需要往现有引擎里塞 UI 的开发者是另一类明显受益者。如果你要求原生外观、不写 Rust,或者在做需要跨版本稳定 API 的消费级产品,就别选它——README 自己写明了接口仍在变化、新版本会有破坏性改动。

上手成本

前提是接受 Rust,独立应用还要接受 eframe/winit 这套栈:走 eframe 会引入大量依赖(winit、image、图形与剪贴板相关 crate),在 Linux 上跑 demo app 还需要 libgtk-3-dev、libxkbcommon-dev 等系统包,不过 egui 核心本身是平台无关的。MIT/Apache-2.0 双许可,基本没有法律摩擦。真正的成本是稳定性风险:项目在活跃开发中,尚未承诺 API 稳定,小版本升级要预留改代码的时间。按 README 指引,从 examples/ 或 eframe template 起步。

点评

egui 不是靠热点起量的新项目:2019 年创建,至今 3 万 1 千多 star,2021 年的 HN 讨论已有 366 分。最近的热度属于平稳而非爆发——Rust 月榜约 1,100 star 排第 18,从未上过每日趋势榜。这个画像更像一个有长期真实需求的成熟基础库。对今天要写 Rust GUI 的人来说,它是可以当默认选项的方案,前提是你接受即时模式的能力边界和近似 1.0 之前的 API 变动。

Hacker News 讨论

Egui: An easy-to-use immediate mode GUI
▲ 366 · 141 条评论 · 2021年8月13日
Egui 0.27 – easy-to-use immediate mode GUI for Rust
▲ 200 · 85 条评论 · 2024年3月27日
Egui commit: Implement accessibility APIs via AccessKit
▲ 96 · 37 条评论 · 2022年12月5日

本文由 AI 根据项目 README 生成,更新于 2026年10月24日,以项目官方文档为准。