#[serde(borrow)]
field: Cow<'a, str>
};
можно будет десериализовать как в Owned, так и в Borrowed-вариант?
мне кажется нет, там будет impl<'a> Deserialize<'a> for S<'a>, а owned требует for<'a> T: Deserialize<'a>
Где T будет например S<'static>
Это очень печально Десериализация должна быть независимой от копирования данных
Ну тут фундаментальная проблема в дизайне serde — DeserializeOwned это не отдельный трейт, из-за чего тип не может иметь разные реализации Deserialize<'_>/DeserializeOwned.
мгмх специализация по лайфтаймам?
Можно решить со специализацией наверное 🤔
Не, не надо по лайфтаймам специализироваться. Надо только сделать DeserializeOwned с дефолтной реализацией для for<'a> Deserialize<'a>
Проблемы в том что это 1) ломающей изменение (а для serde это ужасно, от него все зависят) 2) пока что unstable 3) потребует серьёзные изменения в макросах, чтобы они умели реализовать DeserializeOwned для случаев с коровой например
Обсуждают сегодня