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编码

MIT 许可证

9KB
162

Phone-type

Crates.io

此包包含 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