Skip to content

Commit

Permalink
Allow tuples and single plugins in add_plugins, deprecate `add_plug…
Browse files Browse the repository at this point in the history
…in` (#8097)

# Objective

- Better consistency with `add_systems`.
- Deprecating `add_plugin` in favor of a more powerful `add_plugins`.
- Allow passing `Plugin` to `add_plugins`.
- Allow passing tuples to `add_plugins`.

## Solution

- `App::add_plugins` now takes an `impl Plugins` parameter.
- `App::add_plugin` is deprecated.
- `Plugins` is a new sealed trait that is only implemented for `Plugin`,
`PluginGroup` and tuples over `Plugins`.
- All examples, benchmarks and tests are changed to use `add_plugins`,
using tuples where appropriate.

---

## Changelog

### Changed

- `App::add_plugins` now accepts all types that implement `Plugins`,
which is implemented for:
  - Types that implement `Plugin`.
  - Types that implement `PluginGroup`.
  - Tuples (up to 16 elements) over types that implement `Plugins`.
- Deprecated `App::add_plugin` in favor of `App::add_plugins`.

## Migration Guide

- Replace `app.add_plugin(plugin)` calls with `app.add_plugins(plugin)`.

---------

Co-authored-by: Carter Anderson <mcanders1@gmail.com>
  • Loading branch information
geieredgar and cart authored Jun 21, 2023
1 parent db4bfc9 commit 40f5cf1
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -99,10 +99,10 @@ impl Plugin for WinitPlugin {
),
);

app.add_plugin(AccessibilityPlugin);
app.add_plugins(AccessibilityPlugin);

#[cfg(target_arch = "wasm32")]
app.add_plugin(CanvasParentResizePlugin);
app.add_plugins(CanvasParentResizePlugin);

#[cfg(not(target_arch = "wasm32"))]
let mut create_window_system_state: SystemState<(
Expand Down

0 comments on commit 40f5cf1

Please sign in to comment.