| Crates.io | derive-serialize-into |
| lib.rs | derive-serialize-into |
| version | 0.3.1 |
| created_at | 2018-04-12 12:54:01.98679+00 |
| updated_at | 2018-04-14 18:46:55.399957+00 |
| description | Derive Serialize and Deserialize for validating wrapper types |
| homepage | |
| repository | https://github.com/afck/derive-serialize-into |
| max_upload_size | |
| id | 60293 |
| size | 24,675 |
Serialize, Deserialize for wrapper typesThis crate provides several custom derives that provide implementations of
serde's Serialize and Deserialize traits for wrapper types, as well as
Deserialize implementations that perform some validation.
Sometimes you have a single-field type
#[derive(DeserializeFrom, FromInner, IntoInner, SerializeInto)]
struct Contact {
email: String,
}
which you want to serialize and deserialize as a string instead of a struct, e.g. you want its JSON
representation to just be ""user@domain.com"" instead of "{ "email": "user@domain.com" }". The
above derive attribute creates Serialize and Deserialize implementations for that purpose, as
well as Into and From implementations to convert between String and Contact.
Another example is a validated wrapper type like
#[derive(DeserializeTryFrom, TryFromInner)]
#[try_from_inner = "validator::validate_email"]
struct Email(String);
or
#[derive(DeserializeTryFrom, TryFromInner)]
#[try_from_inner_regex = "^\\+?[[:digit:]]+$"]
struct Phone(String);
that should never be instantianted with a string that doesn't represent a valid email address or
phone number. The above examples create Deserialize and TryFrom implementations accordingly.