5 个不稳定版本
0.3.0 | 2023年4月13日 |
---|---|
0.2.1 | 2022年12月23日 |
0.2.0 | 2022年12月20日 |
0.1.1 | 2022年12月6日 |
0.1.0 | 2022年12月6日 |
#2092 在 编码
9KB
162 行
Phone-type
此包包含 Phone
类型,它仅是 String 包装器,并使用 phone-number-verifier 来验证电话的格式。
安装
在 Cargo.toml
中添加
phone_type = "0.3.0"
或者在您的项目目录中运行
cargo add phone_type
示例
在结构中使用
use phone_type::*;
struct ContactInformation {
pub name: String,
pub age: i8,
pub phone: Phone,
}
fn main() {
let info = ContactInformation {
name: "John Doe".to_string(),
age: 33,
phone: Phone::new("111 111 1111").unwrap(),
};
/*...*/
}
在构造函数中强制类型
use phone_type::*;
struct ContactInformation {
name: String,
age: i8,
phone: String,
}
impl ContactInformation {
pub fn new(name: String, age: i8, phone: Phone) -> Self {
Self {
name,
age,
phone: phone.to_string(),
}
}
}
fn main() {
let info = ContactInformation::new(
"John Doe".to_string(),
33,
Phone::new("111 111 1111").unwrap(),
);
/*...*/
}
Serde 支持
Serde 支持位于 serde
功能之后,并默认启用。如果您不希望使用此功能,请使用
phone_type = {version = "0.3.0", default-features = false}
示例
use serde::{Serialize, Deserialize};
use serde_json::json;
use crate::*;
#[derive(Serialize, Deserialize, Debug, PartialEq)]
struct Contact {
pub name: String,
pub phone: Phone,
}
fn main() {
let contact_json = json!({
"name": "John Doe",
"phone": "111 111 1111"
});
let contact = Contact {
name: "John Doe".to_string(),
phone: Phone::new("111 111 1111").unwrap(),
};
let deserialize_result = serde_json::from_value::<Contact>(contact_json).unwrap();
assert_eq!(&deserialize_result, &contact);
}
依赖项
~2.3–3.5MB
~62K SLoC