用途:用 Rust 开发原生桌面应用,egui 负责控件、布局、Context 与 Ui,eframe 提供原生窗口、事件循环与 wgpu(默认)渲染;egui_extras 补充表格、日期选择与图片。仅当项目本身已是 eframe web 时才考虑 Wasm。
主要能力:即时模式 UI,每帧描述界面,状态保存在 App 字段中;提供 CentralPanel、SidePanel、TopBottomPanel 与浮动 egui::Window;支持菜单栏、键盘快捷键、焦点切换、AccessKit 无障碍;eframe 的 persistence 特性可保存面板布局与窗口尺寸。
使用方式:入口用 eframe::run_native 与 NativeOptions,实现 eframe::App 的 update 方法,在其中调用各面板的 show。控件在 update 内直接调用,如 ui.button("Salvar").clicked(),不要跨帧缓存 Response。循环中的控件需用 Id::new(("row", item.id)) 等稳定唯一 Id。文件、网络或重计算应放到线程,通过 std::sync::mpsc 等通道回传,在 update 中用 try_recv 读取并调用 ctx.request_repaint()。视觉样式集中在 Visuals/Style,避免散落 Color32。
适用场景:需要原生桌面体验、密集列表、菜单与快捷键的 Rust 应用;建议将纯状态抽到 state.rs 以便 cargo test 测试,UI 快照可用 egui_kittest 等。
限制与注意:不要在 update 中做同步文件读取、HTTP 或 sleep;不要用 egui::Window 代替整屏 CentralPanel;不要混用 glow 与 wgpu,除非项目已同时使用;保留 Cargo 已有特性,不要为保险全开。Tauri/webview 与 egui 是不同方案,不应互换。资料未提供具体收费、价格与平台支持细节。