extern crate serde; use downcast::Any; pub trait Mass : Any { fn recv_mass_type(&self) -> MassType; fn position(&self) -> (f64, f64, f64); fn serialize(&self) -> String; fn process(&mut self); fn give_acceleration(&mut self, acceleration : (f64, f64, f64)); fn recv_velocity(&self) -> (f64, f64, f64); fn box_clone(&self) -> Box; } impl Clone for Box { fn clone(&self) -> Box { self.box_clone() } } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum MassType { Ship, Astroid, } downcast!(Mass);