0.1.3 |
|
---|---|
0.1.2 |
|
0.1.1 |
|
0.1.0 |
|
#40 在 #iterate
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