chiark / gitweb /
pieces: Make SimplePieceSpec suitable for deserialize
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 13 Feb 2021 02:04:03 +0000 (02:04 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 13 Feb 2021 12:50:21 +0000 (12:50 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/pieces.rs

index ba314a6d64fa5c474fc5b1499cc0a63012172a57..7d14655799ac069ea8365e2e12ce2938b67d6d1f 100644 (file)
@@ -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<Box<dyn Piece>, 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) {