feat: read works on fermi root

This commit is contained in:
Jonathan Kelley committed 2022-04-20 09:45:34 -04:00
1 parent eef0d7a4b5
commit 366a0a8026
1 file changed
+17 -2
+17 -2
View File
@@ -95,7 +95,22 @@ impl AtomRoot {
}
}
pub fn read<V>(&self, _f: impl Readable<V>) -> &V {
todo!()
pub fn read<V: 'static>(&self, f: impl Readable<V>) -> Rc<V> {
let mut atoms = self.atoms.borrow_mut();
// initialize the value if it's not already initialized
if let Some(slot) = atoms.get_mut(&f.unique_id()) {
slot.value.clone().downcast().unwrap()
} else {
let value = Rc::new(f.init());
atoms.insert(
f.unique_id(),
Slot {
value: value.clone(),
subscribers: HashSet::new(),
},
);
value
}
}
}