【发布时间】:2018-07-03 07:13:52
【问题描述】:
我有这个通过 Serde 反序列化创建的结构,我想在其中有一个 Url 类型的字段,它没有被反序列化:
#[derive(Deserialize, Debug)]
pub struct Flow {
#[serde(skip_deserializing)]
pub source: Url,
}
Serde 抱怨 Url 不满足 Default 特征。我尝试过使用和不使用Default。我自己为Url 实现Default trait 是我唯一的选择吗?
【问题讨论】:
-
如果
source没有反序列化,反序列化Flow时Serde应该放什么? -
是的,我理解这种需要。我只是想知道遵守的最佳方法:要求 Url 实现 Default (增强请求),或者有什么方法可以派生它?还是我必须为 Url 或其他解决方案实现默认值。
-
您必须为
Flow实现Default,而不是Url,如you can't implement traits that aren't local to your crate for types that aren't local to your crate。要使Url实现Default,需要更改url板条箱。 -
您可以改用
Option<Url>。 -
我曾考虑将 Option 作为一种解决方法,只是该字段(稍后)不是可选的 - 但这是一种可能性。谢谢你提醒我。