}
}
-#[typetag::serde]
-impl PieceSpec for piece_specs::Disc {
- #[throws(SpecError)]
- fn load(&self, _: usize, _: &mut GPiece, _ig: &Instance, _:SpecDepth)
- -> PieceSpecLoaded {
- SimplePieceSpec::load(self)?
- }
-}
-
impl piece_specs::Rect {
#[throws(SpecError)]
fn xy(&self) -> Pos {
}
}
-#[typetag::serde]
-impl PieceSpec for piece_specs::Rect {
- #[throws(SpecError)]
- fn load(&self, _: usize, _: &mut GPiece, _ig: &Instance, _:SpecDepth)
- -> PieceSpecLoaded {
- SimplePieceSpec::load(self)?
+macro_rules! impl_PieceSpec_for_SimplePieceSpec { { $ty:ty } => {
+ #[typetag::serde]
+ impl PieceSpec for $ty {
+ #[throws(SpecError)]
+ fn load(&self, _: usize, _: &mut GPiece, _ig: &Instance, _:SpecDepth)
+ -> PieceSpecLoaded {
+ SimplePieceSpec::load(self)?
+ }
}
-}
+} }
+
+impl_PieceSpec_for_SimplePieceSpec!{piece_specs::Disc}
+impl_PieceSpec_for_SimplePieceSpec!{piece_specs::Rect}