bevy_auto_plugin 0.10.0

Procedural attribute macros for Bevy apps that reduce boilerplate by automatically registering components, resources, events, states, and systems in your plugin's build function.
Documentation
Automatically registers a system to be added to the app.

# Parameters
- `plugin = PluginType` - Required unless the `default_plugin` feature is enabled and `#[auto_plugin(default_plugin)]` is in scope. Specifies which plugin should register this system.
- `after_build` - Optional. Injects this macro's tokens at the end of the plugin build instead of the start.
- `schedule = ScheduleName` - Required. Specifies which schedule to add the system to.
- `pipe_in = [sys1, sys2, ...]` - Optional. Pipes inputs into the system in order, so `pipe_in(a, b)` becomes `a.pipe(b).pipe(<system>)`.
- `generics(T1, T2, ...)` - Optional. Specifies concrete types for generic parameters.
  Note: Clippy will complain if you have duplicate generic type names. For those you can use named generics: `generics(A = ..., B = ...)`.
- `config(..)`
  - `in_set = SetName` - Optional. See [`bevy IntoScheduleConfigs in_set`]https://docs.rs/bevy/0.16.1/bevy/prelude/trait.IntoScheduleConfigs.html#method.in_set
  - `before = SetName or system` - Optional. See [`bevy IntoScheduleConfigs before`]https://docs.rs/bevy/0.16.1/bevy/prelude/trait.IntoScheduleConfigs.html#method.before
  - `after = SetName or system` - Optional. See [`bevy IntoScheduleConfigs after`]https://docs.rs/bevy/0.16.1/bevy/prelude/trait.IntoScheduleConfigs.html#method.after
  - `run_if = Condition` - Optional. See [`bevy IntoScheduleConfigs run_if`]https://docs.rs/bevy/0.16.1/bevy/prelude/trait.IntoScheduleConfigs.html#method.run_if
  - `distributive_run_if = Condition` - Optional. See [`bevy IntoScheduleConfigs run_if_inner`]https://docs.rs/bevy/0.16.1/bevy/prelude/trait.IntoScheduleConfigs.html#method.run_if_inner
  - `ambiguous_with = System` - Optional. See [`bevy IntoScheduleConfigs ambiguous_with`]https://docs.rs/bevy/0.16.1/bevy/prelude/trait.IntoScheduleConfigs.html#method.ambiguous_with
  - `ambiguous_with_all = bool` - Optional. See [`bevy IntoScheduleConfigs ambiguous_with_all`]https://docs.rs/bevy/0.16.1/bevy/prelude/trait.IntoScheduleConfigs.html#method.ambiguous_with_all
  - `after_ignore_deferred = SetName or system` - Optional. See [`bevy IntoScheduleConfigs after_ignore_deferred`]https://docs.rs/bevy/0.16.1/bevy/prelude/trait.IntoScheduleConfigs.html#method.after_ignore_deferred
  - `before_ignore_deferred = SetName or system` - Optional. See [`bevy IntoScheduleConfigs before_ignore_deferred`]https://docs.rs/bevy/0.16.1/bevy/prelude/trait.IntoScheduleConfigs.html#method.before_ignore_deferred

# Example
```rust
use bevy::prelude::*;
use bevy_auto_plugin::prelude::*;

#[derive(AutoPlugin)]
#[auto_plugin(impl_plugin_trait)]
struct MyPlugin;

#[derive(Resource, Debug, Default)]
struct FooResource(usize);

#[auto_system(plugin = MyPlugin, schedule = Update)]
fn foo_system(mut foo_res: ResMut<FooResource>) {
    foo_res.0 += 1;
}
```

# Example (with pipe_in)
```rust
use bevy::prelude::*;
use bevy_auto_plugin::prelude::*;

#[derive(AutoPlugin)]
#[auto_plugin(impl_plugin_trait)]
struct MyPlugin;

fn get_name() -> String {
    "World".to_string()
}

fn greet_name(name: In<String>) -> String {
    format!("Hello, {}!", *name)
}

#[auto_system(plugin = MyPlugin, schedule = Startup, pipe_in = [get_name, greet_name])]
fn print_greeting(greeting: In<String>) {
    println!("{}", *greeting);
}
```

# Example (with system set)
```rust
use bevy::prelude::*;
use bevy_auto_plugin::prelude::*;

#[derive(SystemSet, Debug, Hash, PartialEq, Eq, Clone)]
enum TestSet { First, Second }

#[derive(AutoPlugin)]
#[auto_plugin(impl_plugin_trait)]
struct MyPlugin;

#[derive(Resource, Debug, Default)]
struct FooResource(usize);

#[auto_system(plugin = MyPlugin, schedule = Update, config(in_set = TestSet::First))]
fn foo_system(mut foo_res: ResMut<FooResource>) {
    foo_res.0 += 1;
}
```