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
每月下载量 10,160
在 4 crates 中使用
26KB
544 行
简介
这个包用于创建 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