Как избежать необходимости Serde использовать признак по умолчанию для поля, которое пропускает сериализацию?
У меня есть эта структура, которая создается десериализацией с помощью Serde, и я хочу, чтобы в ней было поле типа Url
, которое не десериализуется:
#[derive(Deserialize, Debug)]
pub struct Flow {
#[serde(skip_deserializing)]
pub source: Url,
}
Серд жалуется на то, что Url
не удовлетворяет черте Default
. Я пробовал с выводом и без него Default
. Является ли для меня единственным вариантом реализовать Признак Default
для Url
самого себя?
2 ответа:
Вы можете использовать
#[serde(default = "path")]
на поле дать функцию с сигнатуройfn() -> Url
, которая должна быть вызвана, если поле отсутствует.
Также можно реализовать
Deserialize
себя и обращаться с недостающими значениями соответствующим образом.