pub struct Pool {
nodes: HashMap<TypeId, Box<dyn Any>>, // HashMap<TypeId, Box<SlotMap<DefaultKey, ?>>>
processes: HashMap<TypeId, Box<dyn Any>>, // HashMap<TypeId, Box<?>>
}
/// Run all node processes.
fn process(&self) {
for process_type in self.processes.keys() {
let process = self.processes.get(process_type).unwrap();
process(Vec::new());
}
}
/// Add a process for the specified generic node type.
fn add_process<T: 'static>(&mut self, process: &'static fn(nodes: Vec<RefMut<'_, Node<T>>>)) {
let _: &fn(nodes: Vec<RefMut<'_, Node<T>>>) = process;
self.processes.insert(TypeId::of::<T>(), Box::new(process));
}
once the 'process'es are stored, they become Any so I can't call it anymore, any idea how I could avoid loosing the type?


