1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
use information::InformationAssociator; use std::any::Any; use utilities; pub trait GeneralInformationAssociator { fn add_information(&mut self, vertex_id: usize, information: &mut Any); fn remove_information(&mut self, vertex_id: usize); } impl <TBaseInformation> GeneralInformationAssociator for InformationAssociator<TBaseInformation> where TBaseInformation: Any { fn add_information(&mut self, vertex_id: usize, information: &mut Any) { let self_as_base = self as &mut InformationAssociator<TBaseInformation>; let information_as_base = utilities::static_cast::<TBaseInformation>(information); self_as_base.add_information(vertex_id, information_as_base); } fn remove_information(&mut self, vertex_id: usize) { let self_as_base = self as &mut InformationAssociator<TBaseInformation>; self_as_base.remove_information(vertex_id); } }