pub mod brush; mod brush_cache; pub mod brush_stroke; pub mod migrations { use crate::brush_stroke::BrushStroke; // TODO: Eventually remove this document upgrade code pub fn migrate_to_brush_strokes<'de, D: serde::Deserializer<'de>>(deserializer: D) -> Result, D::Error> { use serde::Deserialize; #[derive(serde::Deserialize)] struct LegacyTable { #[serde(alias = "instances", alias = "instance")] element: Vec, } #[derive(serde::Deserialize)] #[serde(untagged)] enum BrushStrokesFormat { Strokes(Vec), List(LegacyTable), } Ok(match BrushStrokesFormat::deserialize(deserializer)? { BrushStrokesFormat::Strokes(strokes) => strokes, BrushStrokesFormat::List(list) => list.element, }) } }