#serde #serialization #validation #serialization-deserialization

serde-email

一个可使用 Serde 序列化的验证电子邮件类型

11 个稳定版本

3.0.1 2023 年 12 月 29 日
3.0.0 2023 年 8 月 13 日
2.1.0 2023 年 7 月 20 日
2.0.0 2023 年 6 月 11 日
1.1.0 2022 年 11 月 21 日

编码 中排名 #178

Download history 309/week @ 2024-03-29 408/week @ 2024-04-05 581/week @ 2024-04-12 2311/week @ 2024-04-19 1713/week @ 2024-04-26 2069/week @ 2024-05-03 2721/week @ 2024-05-10 2402/week @ 2024-05-17 2176/week @ 2024-05-24 3250/week @ 2024-05-31 2986/week @ 2024-06-07 2209/week @ 2024-06-14 2377/week @ 2024-06-21 2694/week @ 2024-06-28 2635/week @ 2024-07-05 2078/week @ 2024-07-12

每月下载量 10,160
4 crates 中使用

MIT 许可协议

26KB
544

Serde Email

一个可使用 Serde (和 Sea Orm) 序列化的验证电子邮件类型

crate docs

简介

这个包用于创建 Email 对象。

  • 它允许你将 Email 作为一个类型。即 let emails : Vec<Email> = vec![]
  • Email 类型保证是 验证过的。一旦创建,你可以确信它作为一个电子邮件是安全的。
  • Email 类型也可以 作为字符串 使用。这允许与许多接受字符串的连接函数进行互操作。
  • 默认支持 Serde。对于 CLI、请求等的序列化。

(注意,这个库不会检查电子邮件地址是否存在。它只会验证它看起来是否正确。)

特性

  • serde 默认 - 启用 serde 序列化和反序列化。
  • sea-orm - 启用 Sea Orm 与数据库实体的使用。

用法

构建自己的电子邮件地址

use ::serde_email::Email;

let email = Email::from_str("[email protected]").expect("A valid email address");

自己验证电子邮件地址

use ::serde_email::is_valid_email;

if is_valid_email(&"[email protected]") {
  // do something
}

序列化/反序列化

use ::serde_email::Email;
use ::serde_json;

struct Person {
  name: String,
  email: Email,
}

// Some JSON input data as a &str. Maybe this comes from the user.
let data = r#"
    {
        "name": "John Doe",
        "email": "[email protected]"
    }"#;

// Parse the string of data into serde_json::Value.
let person: Person = serde_json::from_str(data).unwrap();

// Access parts of the data by indexing with square brackets.
println!("Hello {} I'll email you are {}", person.name, person.email);

Sea Orm 实体

你可以使用 Email 类型与 Sea Orm 一起使用,包括使用它将数据保存到数据库中。在底层,它将序列化为数据库中的 Text 类型。

use ::sea_orm::entity::prelude::*;
use ::serde::Deserialize;
use ::serde::Serialize;
use ::serde_email::Email;

#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Serialize, Deserialize)]
#[sea_orm(table_name = "user")]
pub struct Model {
    #[sea_orm(primary_key)]
    pub id: i32,
    pub email: Email, // use as an email field
}

#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
pub enum Relation {}

impl ActiveModelBehavior for ActiveModel {}

特别感谢

验证全部由 email_address crate 完成。

依赖

~0.2–1.3MB
~28K SLoC