Я сериализую HashMap
с помощью serde, вот так:
#[derive(Serialize, Deserialize)]
struct MyStruct {
map: HashMap<String, String>
}
Порядок ключей HashMap
не указан, а поскольку хеширование является случайным (см. документацию), ключи фактически выходят в разном порядке между одинаковыми запусками.
Я бы хотел, чтобы мой HashMap
был сериализован в отсортированном (например, в алфавитном) порядке ключей, чтобы сериализация была детерминированной.
Для этого я мог бы использовать BTreeMap
вместо HashMap
, поскольку BTreeMap::keys()
возвращает свои ключи в отсортированном порядке, но я бы предпочел не изменять структуру данных только для того, чтобы приспособиться к логике сериализации.
Как мне сказать serde отсортировать HashMap
ключи перед сериализацией?