# derive-system Rust implementation of https://github.com/stuartsierra/component. This library works alongside `lifecycle`. It is still in development, a lot isn't supported yet (unnamed structs, unit structs, enums, etc). ## Usage ```toml [dependencies] lifecycle = "0.1.0" system-derive = "0.1.0" ``` ## Example ```rust use derive_system::System; use lifecycle::Lifecycle; struct App; impl Lifecycle for App { fn start(self) -> Self { println!("App::start"); Self } fn stop(self) -> Self { println!("App::stop"); Self } } struct Scheduler; impl Lifecycle for Scheduler { fn start(self) -> Self { println!("Scheduler::start"); Self } fn stop(self) -> Self { println!("Scheduler::stop"); Self } } struct Database; impl Lifecycle for Database { fn start(self) -> Self { println!("Database::start"); Self } fn stop(self) -> Self { println!("Database::stop"); Self } } #[derive(System)] pub struct ExampleSystem { app: App, scheduler: Scheduler, database: Database, } fn main() { let mut system = ExampleSystem { app: App, scheduler: Scheduler, database: Database, }; system = system.start(); let _ = system.stop(); } ``` This outputs: ``` App::start Scheduler::start Database::start Database::stop Scheduler::stop App::stop ```