如何避免 Serde 需要跳过序列化的字段的默认特征?
How to avoid Serde needing the Default trait for a field that skips serialization?
我有这个结构,它是通过使用 Serde 反序列化创建的,我想在其中有一个 Url
类型的字段,它没有被反序列化:
#[derive(Deserialize, Debug)]
pub struct Flow {
#[serde(skip_deserializing)]
pub source: Url,
}
Serde 抱怨 Url
不满足 Default
特征。我试过推导和不推导 Default
。是我自己为 Url
实现 Default
特性的唯一选择吗?
您可以在该字段上使用 #[serde(default = "path")]
来提供一个带有签名 fn() -> Url
的函数,如果该字段缺失,则应调用该函数。
您也可以 implement Deserialize
自己适当地处理缺失值。
我有这个结构,它是通过使用 Serde 反序列化创建的,我想在其中有一个 Url
类型的字段,它没有被反序列化:
#[derive(Deserialize, Debug)]
pub struct Flow {
#[serde(skip_deserializing)]
pub source: Url,
}
Serde 抱怨 Url
不满足 Default
特征。我试过推导和不推导 Default
。是我自己为 Url
实现 Default
特性的唯一选择吗?
您可以在该字段上使用 #[serde(default = "path")]
来提供一个带有签名 fn() -> Url
的函数,如果该字段缺失,则应调用该函数。
您也可以 implement Deserialize
自己适当地处理缺失值。