email-type-rs

Crates.ioemail-type-rs
lib.rsemail-type-rs
version1.0.1
sourcesrc
created_at2023-02-26 16:22:12.835579
updated_at2023-02-26 17:06:42.9514
descriptionEmail type for 'parse, don't validate' approach
homepagehttps://github.com/lebe-dev/email-type-rs
repositoryhttps://github.com/lebe-dev/email-type-rs
max_upload_size
id795280
size7,068
Eugene Lebedev (lebe-dev)

documentation

README

Email type

Email type for approach suggested by Alexis King - "Parse, don't validate".

How to use:

Add dependency:

email-type-rs = { git = "https://github.com/lebe-dev/email-type-rs", version = "1.0.0", features = ["utils"] }

Use:

let email = Email::from_str("lexi.lambda@gmail.com")?;
let email = "lexi.lambda@gmail.com".parse()?;

// fn some_func(value: &str)
some_func(email.as_str());
some_func(&email);

Useful for REST API Endpoints, i.e. /api/register accepts:

#[derive(Deserialize)]
struct UserRegistrationRequest {
    pub email: Email,
    ...
}

Incoming JSON with invalid value in email field will raise deserialization error (Serde).

Util functions

Add to Cargo.toml:

[dev-dependencies]
email-type-rs = { git = "https://github.com/lebe-dev/email-type-rs", version = "1.0.0", features = ["utils"] }

Functions:

  • get_random_email() - return random Email. Useful for tests.

Thanks

Commit count: 20

cargo fmt