That will save cloning, in case it's expensive.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
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 {
#[derive(Debug,Serialize,Deserialize)]
pub struct OccultIlkData {
- pub p_occ: Box<dyn OccultedPieceTrait>,
+ pub p_occ: Arc<dyn OccultedPieceTrait>,
}
type Id = OccultIlkId;
};
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))
},
};