mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-09-16 23:08:05 +08:00
Improve backwards compatability robustness of serde-based document format
This commit is contained in:
@@ -80,12 +80,25 @@ pub struct ProtoNodeIdentifier {
|
||||
pub name: Cow<'static, str>,
|
||||
}
|
||||
|
||||
fn migrate_type_descriptor_names<'de, D: serde::Deserializer<'de>>(deserializer: D) -> Result<Cow<'static, str>, D::Error> {
|
||||
use serde::Deserialize;
|
||||
|
||||
// Rename "f32" to "f64"
|
||||
let name = String::deserialize(deserializer)?;
|
||||
let name = match name.as_str() {
|
||||
"f32" => "f64".to_string(),
|
||||
_ => name,
|
||||
};
|
||||
Ok(Cow::Owned(name))
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Eq, specta::Type)]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
|
||||
pub struct TypeDescriptor {
|
||||
#[cfg_attr(feature = "serde", serde(skip))]
|
||||
#[specta(skip)]
|
||||
pub id: Option<TypeId>,
|
||||
#[serde(deserialize_with = "migrate_type_descriptor_names")]
|
||||
pub name: Cow<'static, str>,
|
||||
#[serde(default)]
|
||||
pub size: usize,
|
||||
|
||||
Reference in New Issue
Block a user