из других языков? Т.е. ключи строковые, а значения могут быть любыми.
В serde есть тип Value, который вполне подходит, но не хочется тащить его в доменную область. Как обычно поступают в таких ситуациях?
Box<dyn Any>?
лучше определитесь с возможными для вас типами и запихните их в enum
serde value делает ровно также
Не могу. Точнее, я знаю, что там точно будет валидный json, но конкретные значения могут быть любыми. В принципе-то меня устраивает вариант с Value, но смущает один момент: здесь он естественным образом возник из-за того, что приходится парсить жсоны, а если кто-то пишет приложение, которое не занимается (де)сериализацией, но требует похожую мапу, то как эту задачу решают в общем случае?
можно найти подобный crate
в расте типы преимущественно стираются
Можете немного раскрыть этот тезис?
а что хотите потом с Object делать?
Ситуация такая: есть поле структуры, которое по-сути представляет собой json. Для разных экземпляров этой структуры наполнение может быть разным (разный набор ключей/значений). А использовать предполагается примерно так: где-то у этого поля могут попросить значения одних ключей (если они есть), в другом месте — других.
а типы этих значений разные, да?
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] #[serde(tag = "pole")] enum Pole { Variant1 {odin_kluch: String, drugoi_kluch: String}, Variant2 { sovsem_drugoi_kluch: String} }
В общем случае я не могу типизировать это жсон, вариантов ключей может быть любое количество (во всяком случае, все варианты мне не известны).
Обсуждают сегодня