chiark / gitweb /
Make PieceTrait load occult return an Arc for occult
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 22 Mar 2021 02:14:29 +0000 (02:14 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 22 Mar 2021 02:20:18 +0000 (02:20 +0000)
That will save cloning, in case it's expensive.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/gamestate.rs
src/occultilks.rs
src/shapelib.rs

index 237e1d6f757fe00bb94ac7e66170976eb47131f2..18536042b38c1a4c8821a3101380e28aca8356e5 100644 (file)
@@ -192,7 +192,7 @@ pub struct PieceSpecLoaded {
   pub occultable:  PieceSpecLoadedOccultable,
 }
 pub type PieceSpecLoadedOccultable =
-  Option<(OccultIlkName, Box<dyn OccultedPieceTrait>)>;
+  Option<(OccultIlkName, Arc<dyn OccultedPieceTrait>)>;
 
 #[typetag::serde(tag="type")]
 pub trait PieceSpec: Debug + Sync + Send + 'static {
index 0a9dc86195624a894e6ecaeda903f922c9e4d87f..1d2567e6d9b8b249ef6f2353b1949399bb7d4b57 100644 (file)
@@ -18,7 +18,7 @@ pub struct OccultIlkName(pub Arc<String>);
 
 #[derive(Debug,Serialize,Deserialize)]
 pub struct OccultIlkData {
-  pub p_occ: Box<dyn OccultedPieceTrait>,
+  pub p_occ: Arc<dyn OccultedPieceTrait>,
 }
 
 type Id = OccultIlkId;
index b06a9ab426fc48f637ab951fbd1496d3b164dcfd..747a372d2099cc372fb77cbc83717848360c6073 100644 (file)
@@ -410,12 +410,12 @@ impl Contents {
           };
           svgd
         };
-        let it = Box::new(ItemOccultable {
+        let it = Arc::new(ItemOccultable {
           svgd,
           xform: occ.xform.clone(),
           desc: occ.desc.clone(),
           outline: occ.outline.clone(),
-        }) as Box<dyn OccultedPieceTrait>;
+        }) as Arc<dyn OccultedPieceTrait>;
         Some((OccultIlkName(name), it))
       },
     };