mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-09-16 06:38:03 +08:00
* Populate layer entry cache * Serialize the DocumentMessageHandler * Fix restoring of collapsed/expanded state, add iter impl for Layer, and clean up layer_data() functions * Fixed bug with CreateEmptyLayer revealed by test Co-authored-by: Keavon Chambers <keavon@keavon.com> Co-authored-by: otdavies <oliver@psyfer.io>
26 lines
748 B
Rust
26 lines
748 B
Rust
/// Necessary because serde can't serialize hashmaps when the keys don't implement display.
|
|
use serde::{Deserialize, Deserializer, Serialize, Serializer};
|
|
use std::iter::FromIterator;
|
|
|
|
pub fn serialize<'a, T, K, V, S>(target: T, ser: S) -> Result<S::Ok, S::Error>
|
|
where
|
|
S: Serializer,
|
|
T: IntoIterator<Item = (&'a K, &'a V)>,
|
|
K: Serialize + 'a,
|
|
V: Serialize + 'a,
|
|
{
|
|
let container: Vec<_> = target.into_iter().collect();
|
|
serde::Serialize::serialize(&container, ser)
|
|
}
|
|
|
|
pub fn deserialize<'de, T, K, V, D>(des: D) -> Result<T, D::Error>
|
|
where
|
|
D: Deserializer<'de>,
|
|
T: FromIterator<(K, V)>,
|
|
K: Deserialize<'de>,
|
|
V: Deserialize<'de>,
|
|
{
|
|
let container: Vec<_> = serde::Deserialize::deserialize(des)?;
|
|
Ok(T::from_iter(container.into_iter()))
|
|
}
|