pebble/ecs/plugin.rs
1use crate::app::App;
2
3/// A composable unit of app setup — insert resources, register systems, or
4/// add further plugins. Also implemented for any `FnOnce(App) -> App`, so a
5/// plain closure works as a plugin without a named type.
6pub trait Plugin {
7 fn build(self, app: App) -> App;
8}
9
10impl<F> Plugin for F
11where
12 F: FnOnce(App) -> App,
13{
14 fn build(self, app: App) -> App {
15 self(app)
16 }
17}