Skip to content

afck/derive-serialize-into

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Documentation Latest version

Derive Serialize, Deserialize for wrapper types

This 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 ""[email protected]"" instead of "{ "email": "[email protected]" }". 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.

About

Derive Serialize and Deserialize for wrapper types

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages