From ff1b8719169c6263ff9d74bc2e30b7ff2b868b63 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sat, 13 Feb 2021 02:04:03 +0000 Subject: [PATCH] pieces: Make SimplePieceSpec suitable for deserialize Signed-off-by: Ian Jackson --- src/pieces.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/pieces.rs b/src/pieces.rs index ba314a6d..7d146557 100644 --- a/src/pieces.rs +++ b/src/pieces.rs @@ -14,7 +14,7 @@ type SE = SVGProcessingError; #[derive(Debug,Serialize,Deserialize)] // todo: this serialisation is rather large -struct SimpleShape { +pub struct SimpleShape { desc: Html, path: Html, colours: ColourMap, @@ -213,13 +213,15 @@ impl SimpleShape { } } -trait SimplePieceSpec { +#[typetag::serde(tag="type")] +pub trait SimplePieceSpec: Debug { fn load_raw(&self) -> Result<(SimpleShape, &SimpleCommon), SpecError>; fn load(&self) -> Result, SpecError> { Ok(Box::new(self.load_raw()?.0)) } } +#[typetag::serde] impl SimplePieceSpec for piece_specs::Disc { #[throws(SpecError)] fn load_raw(&self) -> (SimpleShape, &SimpleCommon) { @@ -251,6 +253,7 @@ impl piece_specs::Square { } } +#[typetag::serde] impl SimplePieceSpec for piece_specs::Square { #[throws(SpecError)] fn load_raw(&self) -> (SimpleShape, &SimpleCommon) { -- 2.30.2