# Bevy Discovery This crate adds `#[derive(DiscoveryPlugin)]` which will scan the project files for functions annotated with `#[system]` and register them automagically. Example: ```rust use bevy::prelude::*; #[macro_use] extern crate bevy_discovery; fn main() { App::build() .add_plugin(DiscoveryPlugin) .run(); } #[system] fn discovered_system() { println!("Woo, discovered system!"); } #[system(stage::POST_UPDATE)] fn post_update_system() { println!("Hey, post update system!"); } #[derive(DiscoveryPlugin)] struct DiscoveryPlugin; ``` ## Compile time performance
Full rebuild Incremental
Normal 198.982 ± 1.167 s 25.944 ± 1.486 s
Discovered 207.636 ± 3.785 s 26.546 ± 1.782 s
These are the compile times for [my fork of bevy-robbo](https://github.com/TheRawMeatball/bevy-robbo), averaged over five runs with a discarded warmup round each using [hyperfine](https://github.com/sharkdp/hyperfine).