Как избежать необходимости 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себя и обращаться с недостающими значениями соответствующим образом.