Skip to main content

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}