Use pointers for indexing elements by ID

This commit is contained in:
Aaron Fenyes 2025-05-04 00:24:31 -07:00
parent ab01c26415
commit 5191534886

View file

@ -446,7 +446,7 @@ pub struct Assembly {
pub tangent: Signal<ConfigSubspace>,
// indexing
pub elements_by_id: Signal<FxHashMap<String, ElementKey>>
pub elements_by_id: Signal<FxHashMap<String, Rc<dyn Element>>>
}
impl Assembly {
@ -469,7 +469,7 @@ impl Assembly {
let id = elt.id().clone();
let elt_rc = Rc::new(elt);
let key = self.elements.update(|elts| elts.insert(elt_rc.clone())); /* KLUDGE */ // reorganize to avoid cloning?
self.elements_by_id.update(|elts_by_id| elts_by_id.insert(id, key));
self.elements_by_id.update(|elts_by_id| elts_by_id.insert(id, elt_rc.clone())); /* KLUDGE */ // reorganize to avoid cloning?
// create and insert the element's default regulators
for reg in elt_rc.default_regulators(&self) {