#wrapper #serialization #validation #serde #derive-deserialize

derive-serialize-into

为包装类型派生Serialize和Deserialize进行验证

5个不稳定版本

使用旧的Rust 2015

0.3.1 2018年4月14日
0.3.0 2018年4月14日
0.2.1 2018年4月13日
0.2.0 2018年4月12日
0.1.0 2018年4月12日

#53#derive-deserialize

每月下载量 29

MIT 协议

22KB
238

Documentation Latest version

为包装类型派生SerializeDeserialize

此包提供了一些自定义派生,这些派生为包装类型提供了serdeSerializeDeserialize特质的实现,以及执行一些验证的Deserialize实现。

有时你有一个单字段类型

#[derive(DeserializeFrom, FromInner, IntoInner, SerializeInto)]
struct Contact {
    email: String,
}

你希望将其序列化和反序列化为字符串,而不是结构体,例如,你希望其JSON表示形式只是 ""user@domain.com"" 而不是 "{ "email": "user@domain.com" }"。上面的派生属性创建了用于此目的的SerializeDeserialize实现,以及IntoFrom实现,以在StringContact之间进行转换。

另一个例子是一个验证过的包装类型,如

#[derive(DeserializeTryFrom, TryFromInner)]
#[try_from_inner = "validator::validate_email"]
struct Email(String);

或者

#[derive(DeserializeTryFrom, TryFromInner)]
#[try_from_inner_regex = "^\\+?[[:digit:]]+$"]
struct Phone(String);

不应该使用不表示有效电子邮件地址或电话号码的字符串进行实例化。上面的示例相应地创建了DeserializeTryFrom实现。

依赖项

~2MB
~47K SLoC