5 个版本 (破坏性更新)
0.5.0 | 2024 年 7 月 3 日 |
---|---|
0.4.0 | 2024 年 4 月 2 日 |
0.3.0 | 2024 年 2 月 7 日 |
0.2.0 | 2024 年 1 月 21 日 |
0.1.0 | 2023 年 11 月 1 日 |
#840 in 数据结构
每月 49 次下载
在 2 crates 中使用
83KB
938 行
egui_suspense
在等待异步数据时显示加载、错误和重试 UI 的辅助工具。
最小示例
use eframe::egui;
use egui::CentralPanel;
use egui_suspense::EguiSuspense;
pub fn main() -> eframe::Result<()> {
let mut suspense = EguiSuspense::reloadable(|cb| {
std::thread::spawn(move || {
std::thread::sleep(std::time::Duration::from_secs(1));
cb(if rand::random() {
Ok("Hello".to_string())
} else {
Err("OOPSIE WOOPSIE!".to_string())
});
});
});
eframe::run_simple_native(
"DnD Simple Example",
Default::default(),
move |ctx, _frame| {
CentralPanel::default().show(ctx, |ui| {
// This will show a spinner while loading and an error message with a
// retry button if the callback returns an error.
suspense.ui(ui, |ui, data, state| {
ui.label(format!("Data: {:?}", data));
if ui.button("Reload").clicked() {
state.reload();
}
});
});
},
)
}
依赖项
~5–13MB
~138K SLoC