pkecs 8.0.0

Another ECS implementation.
Documentation
use super::{event::EventHandler, plugin::Plugin, system::System};

/// An application which uses pkecs as it's framework.
pub trait Application {
    /// Registers a [`System`] for a schedule.
    fn add_system<TSchedule, TSystem>(&mut self, schedule: TSchedule, system: TSystem) -> &mut Self
        where
            TSchedule: 'static,
            TSystem: System + 'static;

    /// Registers an [`EventHandler`].
    fn handle_event<TEvent, TEventHandler>(&mut self, handler: TEventHandler) -> &mut Self
        where
            TEvent: 'static,
            TEventHandler: EventHandler<TEvent> + 'static;

    /// Configures the application with a [`Plugin`].
    fn add_plugin<TPlugin>(&mut self, plugin: TPlugin) -> &mut Self
        where
            TPlugin: Plugin;
}