chiark / gitweb /
Remove some Arcs
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 3 May 2022 20:04:53 +0000 (21:04 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 3 May 2022 20:04:53 +0000 (21:04 +0100)
The one around Html is getting in my way.  These are an optimisation
which is only effective until the first save/load, which seems
useless.

Putting a GoodItemName in an Arc seems overkill.

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

index e1c7cfe0b2e2c35cb210bba715d011c37402e0b8..3cbcbcc79bdc86c889f5ee1eec5e57a71b6c634f 100644 (file)
@@ -18,7 +18,7 @@ slotmap::new_key_type!{ pub struct OccultIlkId; }
 #[serde(transparent)]
 pub struct OccultIlkOwningId(Id);
 
-pub type OccultIlkName = Arc<GoodItemName>;
+pub type OccultIlkName = GoodItemName;
 
 #[derive(Debug,Clone,Serialize,Deserialize)]
 pub struct OccultIlkData {
index f3826db8c6cb84a787ea589461fea162891ca28a..86c9a60d772e82fbe51edde33d7074f8511ba2a9 100644 (file)
@@ -67,11 +67,11 @@ enum OccData {
 #[allow(non_camel_case_types)]
 #[derive(Debug)]
 struct OccData_Internal {
-  item_name: SvgBaseName<Arc<GoodItemName>>,
+  item_name: SvgBaseName<GoodItemName>,
   outline: Outline,
   desc: Html,
   xform: FaceTransform,
-  svgd: lazy_init::Lazy<Result<Arc<Html>,SpecError>>,
+  svgd: lazy_init::Lazy<Result<Html,SpecError>>,
 }
 
 #[derive(Error,Debug)]
@@ -178,9 +178,9 @@ pub struct Item {
 
 #[derive(Debug,Serialize,Deserialize)]
 struct ItemInertForOcculted {
-  itemname: Arc<GoodItemName>,
+  itemname: GoodItemName,
   desc: Html,
-  svgd: Arc<Html>,
+  svgd: Html,
   xform: FaceTransform,
   outline: Outline,
 }
@@ -604,7 +604,7 @@ impl Contents {
             occ.item_name.unnest::<GoodItemName>().unnest(),
             /* original: */ lib_name, name.as_str()
           )?;
-          Ok(Arc::new(occ_data))
+          Ok(occ_data)
         }).clone()?;
         let it = Arc::new(ItemInertForOcculted {
           svgd,
@@ -819,7 +819,7 @@ pub fn load_catalogue(libname: &str, src: &mut dyn LibrarySource) -> Contents {
           let src_name  = subst(&fe.src_file_spec, "_c", &colour.0);
           let item_name: GoodItemName = item_name.try_into()?;
           let item_name = SvgBaseName::note(
-            src, Arc::new(item_name), src_name.as_ref().map(|s| s.as_str()),
+            src, item_name, src_name.as_ref().map(|s| s.as_str()),
           )?;
           let desc = subst(&fe.desc, "_colour", "")?.to_html();
           OccData::Internal(Arc::new(OccData_Internal {