最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

rust的nutyp驗證和validator驗證數(shù)據(jù)的方法示例詳解

 更新時間:2024年09月29日 11:10:49   作者:jr-create(?????)  
本文介紹了在Rust語言中,如何使用nuType和validator兩種工具來對Cargo.toml和modules.rs文件進行驗證,通過具體的代碼示例和操作步驟,詳細解釋了驗證過程和相關(guān)配置,幫助讀者更好地理解和掌握使用這兩種驗證工具的方法,更多Rust相關(guān)技術(shù)資訊,可繼續(xù)關(guān)注腳本之家

使用nutype驗證

Cargo.toml

nutype = { version = "0.5.0", features = ["serde","regex"] }
regex = "1"
thiserror = "1"

modules.rs

#[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復(fù)制
pub struct Username(String);
// #[nutype(
// validate(not_empty, len_char_min = 8),
// derive(AsRef, Clone, Serialize, Deserialize, PartialEq)
// )]
#[nutype(validate(with = password_regex, error = ErrorMessage),derive(Debug, PartialEq),)]
pub struct Password(String);
// 正則匹配手機號
static PHONE_NUMBER_REGEX: LazyLock<Regex> = LazyLock::new(||
Regex::new("^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\\d{8}$"
).unwrap());
// 直接使用正則表達式
#[nutype(validate(regex = PHONE_NUMBER_REGEX))]
pub struct PhoneNumber(String);
// 自定義方法
#[nutype(validate(with = email_regex, error = ErrorMessage))]
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(())
	}
}

使用validator驗證

Cargo.toml

validator = {version = "0.18.1",features = ["derive"]}
lazy_static = "1.5.0"

modules.rs

#[derive(Validate, Debug, Default, Clone, Serialize, Deserialize)]
pub struct RegisterUserDto {
#[validate(length(min = 1, message = "姓名為必填項"))]
pub name: String,
#[validate(length(min = 0, message = "用戶名不是必填項"))]
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 = "需要確認(rèn)密碼"),
must_match(other = "password", message="密碼不匹配")
)]
#[serde(rename = "passwordConfirm")]
pub password_confirm: String,
}
//validator自定義方法是無法使用自定義錯誤類型的,必須使用crate的,具體看validator crate

到此這篇關(guān)于rust的nutyp驗證和validator驗證數(shù)據(jù)的方法的文章就介紹到這了,更多相關(guān)rust nutyp驗證和validator驗證數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Rust 模式匹配示例詳解

    Rust 模式匹配示例詳解

    這篇文章主要為大家介紹了Rust 模式匹配示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • Rust?連接?PostgreSQL?數(shù)據(jù)庫的詳細過程

    Rust?連接?PostgreSQL?數(shù)據(jù)庫的詳細過程

    這篇文章主要介紹了Rust?連接?PostgreSQL?數(shù)據(jù)庫的完整代碼,本文圖文實例代碼相結(jié)合給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-01-01
  • Rust?語言中符號?::?的使用場景解析

    Rust?語言中符號?::?的使用場景解析

    Rust?是一種強調(diào)安全性和速度的系統(tǒng)編程語言,這篇文章主要介紹了Rust?語言中符號?::?的使用場景,本文給大家介紹的非常詳細,需要的朋友可以參考下
    2024-03-03
  • rust 如何使用 cargo-nextest 替代 cargo test

    rust 如何使用 cargo-nextest 替代 cargo te

    cargo-nextest 是新一代的rust測試程序,能夠極大提升測試性能,可以完全替代 cargo test 命令,這篇文章主要介紹了rust 如何使用 cargo-nextest 替代 cargo test,需要的朋友可以參考下
    2024-05-05
  • rust類型轉(zhuǎn)換的實現(xiàn)

    rust類型轉(zhuǎn)換的實現(xiàn)

    Rust是類型安全的語言,因此在Rust中做類型轉(zhuǎn)換不是一件簡單的事,本文主要介紹了rust類型轉(zhuǎn)換的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • 利用Rust實現(xiàn)一個簡單的Ping應(yīng)用

    利用Rust實現(xiàn)一個簡單的Ping應(yīng)用

    這兩年Rust火的一塌糊涂,甚至都燒到了前端,再不學(xué)習(xí)怕是要落伍了。最近翻了翻文檔,寫了個簡單的Ping應(yīng)用練練手,感興趣的小伙伴可以了解一下
    2022-12-12
  • rust異步編程詳細講解

    rust異步編程詳細講解

    這篇文章主要介紹了rust異步編程,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-12-12
  • Rust中泛型的學(xué)習(xí)筆記

    Rust中泛型的學(xué)習(xí)筆記

    在Rust語言中,泛型是一種強大的工具,它允許我們編寫可復(fù)用且靈活的代碼,本文主要介紹了Rust中泛型的學(xué)習(xí)筆記,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • 詳解Rust 生命周期符號使用的方法和規(guī)律

    詳解Rust 生命周期符號使用的方法和規(guī)律

    生命周期是 Rust 中處理引用和所有權(quán)的關(guān)鍵概念,通過正確使用生命周期符號和遵循相關(guān)規(guī)律,你可以編寫出安全、高效的 Rust 代碼,這篇文章主要介紹了Rust 生命周期符號使用的方法和規(guī)律,需要的朋友可以參考下
    2024-03-03
  • Rust處理錯誤的實現(xiàn)方法

    Rust處理錯誤的實現(xiàn)方法

    程序在運行的過程中,總是會不可避免地產(chǎn)生錯誤,而如何優(yōu)雅地解決錯誤,也是語言的設(shè)計哲學(xué)之一。本文就來和大家來了Rust是如何處理錯誤的,感興趣的可以了解一下
    2023-03-03

最新評論

油尖旺区| 瓦房店市| 定兴县| 会东县| 白玉县| 崇信县| 剑川县| 固始县| 公安县| 乌兰浩特市| 玉田县| 吉木乃县| 贵州省| 随州市| 施秉县| 临泉县| 祁东县| 保亭| 山东省| 高清| 策勒县| 宁化县| 临漳县| 正阳县| 太谷县| 霍城县| 元氏县| 神木县| 法库县| 贵港市| 凌云县| 永年县| 田阳县| 河北省| 达日县| 德保县| 墨江| 清镇市| 思茅市| 长沙市| 邵阳县|