rust的nutyp验证和validator验证数据的方法示例详解
<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li>使用nutype验证</li><li>使用validator验证</li></ul></div><p class="maodian"></p><h2>使用nutype验证</h2><blockquote><p>Cargo.toml</p></blockquote>
<div class="jb51code"><pre class="brush:plain;">nutype = { version = "0.5.0", features = ["serde","regex"] }
regex = "1"
thiserror = "1"</pre></div>
<blockquote><p>modules.rs</p></blockquote>
<div class="jb51code"><pre class="brush:plain;">#[nutype(
sanitize(trim, lowercase),
validate(not_empty, len_char_min = 3, len_char_max = 30),
derive(AsRef, Clone, Debug, Serialize, Deserialize, PartialEq)
)]
// AsRef表示可以单独访问username,clone复制
pub struct Username(String);
// #[nutype(
// validate(not_empty, len_char_min = 8),
// derive(AsRef, Clone, Serialize, Deserialize, PartialEq)
// )]
#
pub struct Password(String);
// 正则匹配手机号
static PHONE_NUMBER_REGEX: LazyLock<Regex> = LazyLock::new(||
Regex::new("^(13|14|15|16|17|18|19)\\d{8}$"
).unwrap());
// 直接使用正则表达式
#
pub struct PhoneNumber(String);
// 自定义方法
#
pub struct EmailNumber(String);
// 正则匹配邮箱号
static EMAIL_NUMBER_REGEX: LazyLock<Regex> = LazyLock::new(||
Regex::new("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"
).unwrap());
pub fn email_regex(name: &str) -> Result<(), ErrorMessage> {
match EMAIL_NUMBER_REGEX.captures(name){
// 这里可以返回自定义的错误类型
None => Err(ErrorMessage::InvalidEmailFormat),
Some(_) => Ok(())
}
}</pre></div>
<p class="maodian"></p><h2>使用validator验证</h2>
<blockquote><p>Cargo.toml</p></blockquote>
<div class="jb51code"><pre class="brush:plain;">validator = {version = "0.18.1",features = ["derive"]}
lazy_static = "1.5.0"</pre></div>
<blockquote><p>modules.rs</p></blockquote>
<div class="jb51code"><pre class="brush:plain;">#
pub struct RegisterUserDto {
#
pub name: String,
#
pub username: String,
#[validate(
length(min = 1, message = "电子邮件是必需的"),
email(message = "电子邮件无效")
)]
pub email: String,
#[validate(
length(min = 1, message = "手机号是必需的"),
)]
pub phone: String,
#[validate(
length(min = 6, message = "密码必须至少为 6 个字符")
)]
pub password: String,
#[validate(
length(min = 1, message = "需要确认密码"),
must_match(other = "password", message="密码不匹配")
)]
#
pub password_confirm: String,
}
//validator自定义方法是无法使用自定义错误类型的,必须使用crate的,具体看validator crate</pre></div>
<p>到此这篇关于rust的nutyp验证和validator验证数据的方法的文章就介绍到这了,更多相关rust nutyp验证和validator验证数据内容请搜索琼殿技术社区以前的文章或继续浏览下面的相关文章希望大家以后多多支持琼殿技术社区!</p>
<div class="art_xg">
<b>您可能感兴趣的文章:</b><ul><li>Rust 累计时间长度的操作方法</li><li>rust使用Atomic创建全局变量和使用操作方法</li><li>Rust捕获全局panic并记录进程退出日志的方法</li><li>RUST语言函数的定义与调用方法</li><li>rust 一个日志缓存记录的通用实现方法</li><li>Rust中的方法与关联函数使用解读</li></ul>
</div>
</div>
<!--endmain-->
頁:
[1]