3 个不稳定版本

0.2.0 2024年7月3日
0.1.1 2024年5月14日
0.1.0 2024年5月14日

#72 in 国际化 (i18n)

Download history 210/week @ 2024-05-13 29/week @ 2024-05-20 6/week @ 2024-05-27 79/week @ 2024-06-03 15/week @ 2024-06-10 4/week @ 2024-06-17 9/week @ 2024-06-24 138/week @ 2024-07-01 91/week @ 2024-07-08 58/week @ 2024-07-15 52/week @ 2024-07-22 37/week @ 2024-07-29

每月257次下载
hello_egui 中使用

MIT 许可协议

110KB
413

egui_form

egui_ver Latest version Documentation unsafe forbidden License

egui_form 为 egui 添加表单验证功能。它可以使用 validatorgarde 进行验证。这也意味着,如果您使用 Rust,您可以在服务器和客户端上使用相同的验证逻辑。

请查看validator 实现garde 实现的文档以开始。

您还可以通过为所使用的任何表单验证crate实现EguiValidationReport来构建自定义实现。

展示

您可以在 hello_egui 展示应用中尝试签到表单示例

此外,这里还有 HelloPaint 个人资料表单的屏幕截图

screenshot

我应该使用 validator 还是 garde?

对于小型/原型项目,我建议使用 garde,因为它具有内置的错误消息。对于可能需要 i18n 的较大项目,可能更有意义使用 validator,因为它允许自定义错误消息(目前 garde 没有i18n支持)。

在 HelloPaint 中,我使用 garde,因为它看起来更干净,更活跃,希望 i18n 会在它成为 HelloPaint 问题之前得到解决。

使用 garde 的最小示例

来自 egui_form_minimal.rs

use eframe::NativeOptions;
use egui::{TextEdit, Ui};
use egui_form::garde::{GardeReport, field_path};
use egui_form::{Form, FormField};
use garde::Validate;


#[derive(Debug, Default, Validate)]
struct Fields {
    #[garde(length(min = 2, max = 50))]
    user_name: String,
}

fn form_ui(ui: &mut Ui, fields: &mut Fields) {
    let mut form = Form::new().add_report(GardeReport::new(fields.validate(&())));

    FormField::new(&mut form, field_path!("user_name"))
        .label("User Name")
        .ui(ui, TextEdit::singleline(&mut fields.user_name));

    if let Some(Ok(())) = form.handle_submit(&ui.button("Submit"), ui) {
        println!("Submitted: {:?}", fields);
    }
}

依赖项

~4–11MB
~103K SLoC