#validation #user-input #error #iterate #url #macro #function

已删除 preflight

一个宏,用于将用户输入通过多个验证函数,并对产生的错误进行迭代

0.1.3 2021年1月23日
0.1.2 2021年1月23日
0.1.1 2021年1月21日
0.1.0 2021年1月21日

#40#iterate

MIT 协议

8KB
111

preflight

validate! 宏使用一组给定的验证函数验证给定的输入,并允许您方便地遍历错误。例如

#[macro_use] extern crate preflight;
use preflight::validators::{max_len, url_with_scheme};

let mut errors = Vec::new();

validate![profile_url
    => for err in max_len(265), url_with_scheme(&["http", "https"]) {
        errors.push(format!("profile URL {}", err));
    }
];

在上面的例子中,validate! 宏展开为

if let Err(err) = max_len(profile_url, 265) {
    errors.push(format!("profile URL {}", err));
}
if let Err(err) = url_with_scheme(profile_url, &["http", "https"]) {
    errors.push(format!("profile URL {}", err));
}

注意第一个表达式是如何自动作为所有列出的验证函数的第一个参数传递的。

由于需要在 Option 中验证值是非常常见的,因此该软件包还提供了一个 validate_opt!

validate_opt![profile_url, ...];

是等价的

if let Some(profile_url) = profile_url {
    validate![profile_url, ...];
}

您可以轻松地定义自己的验证函数,只需返回一个 Result 并将输入作为第一个参数即可。

依赖关系

~210KB