use super::{event::EventHandler, plugin::Plugin, system::System};
pub trait Application {
fn add_system<TSchedule, TSystem>(&mut self, schedule: TSchedule, system: TSystem) -> &mut Self
where
TSchedule: 'static,
TSystem: System + 'static;
fn handle_event<TEvent, TEventHandler>(&mut self, handler: TEventHandler) -> &mut Self
where
TEvent: 'static,
TEventHandler: EventHandler<TEvent> + 'static;
fn add_plugin<TPlugin>(&mut self, plugin: TPlugin) -> &mut Self
where
TPlugin: Plugin;
}