Skip to content

Remove #[system_param(ignore)] and #[world_query(ignore)] #8265

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Mar 30, 2023

Conversation

joseph-gio
Copy link
Member

@joseph-gio joseph-gio commented Mar 30, 2023

Objective

Follow-up to #8030.

Now that SystemParam and WorldQuery are implemented for PhantomData, the ignore attributes are now unnecessary.


Changelog

  • Removed the attributes #[system_param(ignore)] and #[world_query(ignore)].

Migration Guide

The attributes #[system_param(ignore)] and #[world_query] ignore have been removed. If you were using either of these with PhantomData fields, you can simply remove the attribute:

#[derive(SystemParam)]
struct MyParam<'w, 's, Marker> {
    ...
    // Before:
    #[system_param(ignore)]
    _marker: PhantomData<Marker>,

    // After:
    _marker: PhantomData<Marker>,
}
#[derive(WorldQuery)]
struct MyQuery<Marker> {
    ...
    // Before:
    #[world_query(ignore)]
    _marker: PhantomData<Marker>,

    // After:
    _marker: PhantomData<Marker>,
}

If you were using this for another type that implements Default, consider wrapping that type in Local<> (this only works for SystemParam):

#[derive(SystemParam)]
struct MyParam<'w, 's> {
    // Before:
    #[system_param(ignore)]
    value: MyDefaultType, // This will be initialized using `Default` each time `MyParam` is created.

    // After:
    value: Local<MyDefaultType>, // This will be initialized using `Default` the first time `MyParam` is created.
}

If you are implementing either trait and need to preserve the exact behavior of the old ignore attributes, consider manually implementing SystemParam or WorldQuery for a wrapper struct that uses the Default trait:

// Before:

#[derive(WorldQuery)
struct MyQuery {
   #[world_query(ignore)]
    str: String,
}

// After:

#[derive(WorldQuery)
struct MyQuery {
    str: DefaultQuery<String>,
}

pub struct DefaultQuery<T: Default>(pub T);

unsafe impl<T: Default> WorldQuery for DefaultQuery<T> {
    type Item<'w> = Self;
    ...
    unsafe fn fetch<'w>(...) -> Self::Item<'w> {
        Self(T::default())
    }
}

@joseph-gio joseph-gio added A-ECS Entities, components, systems, and events C-Code-Quality A section of code that is hard to understand or change M-Needs-Migration-Guide A breaking change to Bevy's public API that needs to be noted in a migration guide labels Mar 30, 2023
@alice-i-cecile alice-i-cecile added this to the 0.11 milestone Mar 30, 2023
@james7132 james7132 added the S-Ready-For-Final-Review This PR has been approved by the community. It's ready for a maintainer to consider merging it label Mar 30, 2023
@james7132 james7132 enabled auto-merge March 30, 2023 22:54
@james7132 james7132 added this pull request to the merge queue Mar 30, 2023
Merged via the queue into bevyengine:main with commit a954f3e Mar 30, 2023
@joseph-gio joseph-gio deleted the yeet-ignore branch March 31, 2023 00:59
reshen added a commit to reshen/bevy_godot4 that referenced this pull request May 10, 2025
* Some useful references that informed changes:
  * https://bevyengine.org/learn/migration-guides/0-15-to-0-16/
  * bevyengine/bevy#8265
* Cargo clippy fix over all code
* Updated simple example so it works with Bevy 0.16
reshen added a commit to reshen/bevy_godot4 that referenced this pull request May 10, 2025
* Some useful references that informed changes:
  * https://bevyengine.org/learn/migration-guides/0-15-to-0-16/
  * bevyengine/bevy#8265
* Cargo clippy fix over all code
* Updated simple example so it works with Bevy 0.16
jrockett6 pushed a commit to jrockett6/bevy_godot4 that referenced this pull request May 22, 2025
* Update rust edition to 2024, fix simple example resolver warning

Also explicitly specify virtual workspace resovler in example to silence
warning message, i.e., the following no longer appears on cargo builds
of the example:

warning: virtual workspace defaulting to `resolver = "1"` despite one or
more workspace members being on edition 2024 which implies `resolver =
"3"`
note: to keep the current resolver, specify `workspace.resolver = "1"`
in the workspace root's manifest
note: to use the edition 2024 resolver, specify `workspace.resolver =
"3"` in the workspace root's manifest
note: for more details see
https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions

* Migrating to Bevy 0.16

* Some useful references that informed changes:
  * https://bevyengine.org/learn/migration-guides/0-15-to-0-16/
  * bevyengine/bevy#8265
* Cargo clippy fix over all code
* Updated simple example so it works with Bevy 0.16

* README fix to clarify current package
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-ECS Entities, components, systems, and events C-Code-Quality A section of code that is hard to understand or change M-Needs-Migration-Guide A breaking change to Bevy's public API that needs to be noted in a migration guide S-Ready-For-Final-Review This PR has been approved by the community. It's ready for a maintainer to consider merging it
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants