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
22KB
238 行
为包装类型派生Serialize
和Deserialize
此包提供了一些自定义派生,这些派生为包装类型提供了serde的Serialize
和Deserialize
特质的实现,以及执行一些验证的Deserialize
实现。
有时你有一个单字段类型
#[derive(DeserializeFrom, FromInner, IntoInner, SerializeInto)]
struct Contact {
email: String,
}
你希望将其序列化和反序列化为字符串,而不是结构体,例如,你希望其JSON表示形式只是 ""user@domain.com"
" 而不是 "{ "email": "user@domain.com" }
"。上面的派生属性创建了用于此目的的Serialize
和Deserialize
实现,以及Into
和From
实现,以在String
和Contact
之间进行转换。
另一个例子是一个验证过的包装类型,如
#[derive(DeserializeTryFrom, TryFromInner)]
#[try_from_inner = "validator::validate_email"]
struct Email(String);
或者
#[derive(DeserializeTryFrom, TryFromInner)]
#[try_from_inner_regex = "^\\+?[[:digit:]]+$"]
struct Phone(String);
不应该使用不表示有效电子邮件地址或电话号码的字符串进行实例化。上面的示例相应地创建了Deserialize
和TryFrom
实现。
依赖项
~2MB
~47K SLoC