diff --git a/_release-content/migration-guides/define_label.md b/_release-content/migration-guides/define_label.md new file mode 100644 index 0000000000000..a67f8f8967c54 --- /dev/null +++ b/_release-content/migration-guides/define_label.md @@ -0,0 +1,27 @@ +--- +title: "`define_label!` no longer defines an `Interner`" +pull_requests: [24445] +--- + +The macro `define_label!()` no longer takes a parameter for the name of an `Interner`, +and that interner is no longer a public `static` item. Calls like + +```rust +bevy::ecs::define_label!( + /// Documentation + ThingLabel, + THING_LABEL_INTERNER +); +``` + +must be changed to + +```rust +bevy::ecs::define_label!( + /// Documentation + ThingLabel, +); +``` + +If you were calling `Interner::intern()` on the defined interner, then replace those calls +with calls to the `.intern()` method of the defined label trait. diff --git a/crates/bevy_app/src/app.rs b/crates/bevy_app/src/app.rs index 2a0add491197b..f99bfea71d11a 100644 --- a/crates/bevy_app/src/app.rs +++ b/crates/bevy_app/src/app.rs @@ -42,7 +42,6 @@ bevy_ecs::define_label!( note = "consider annotating `{Self}` with `#[derive(AppLabel)]`" )] AppLabel, - APP_LABEL_INTERNER ); pub use bevy_ecs::label::DynEq; diff --git a/crates/bevy_ecs/src/label.rs b/crates/bevy_ecs/src/label.rs index 2509311c843c0..54668db0d1094 100644 --- a/crates/bevy_ecs/src/label.rs +++ b/crates/bevy_ecs/src/label.rs @@ -72,7 +72,6 @@ where /// define_label!( /// /// Documentation of label trait /// MyNewLabelTrait, -/// MY_NEW_LABEL_TRAIT_INTERNER /// ); /// /// /// A new label type implementing the new label trait. @@ -97,7 +96,6 @@ where /// define_label!( /// /// Documentation of another label trait /// MyNewExtendedLabelTrait, -/// MY_NEW_EXTENDED_LABEL_TRAIT_INTERNER, /// extra_methods: { /// // Extra methods for the trait can be defined here /// fn additional_method(&self) -> i32; @@ -135,10 +133,7 @@ where /// /// ``` /// # use bevy_ecs::define_label; -/// define_label!( -/// Team, -/// TEAM_INTERNER -/// ); +/// define_label!(Team); /// /// macro_rules! define_team { /// ($name:ident) => { @@ -164,13 +159,11 @@ where macro_rules! define_label { ( $(#[$label_attr:meta])* - $label_trait_name:ident, - $interner_name:ident + $label_trait_name:ident $(,)? ) => { $crate::define_label!( $(#[$label_attr])* $label_trait_name, - $interner_name, extra_methods: {}, extra_methods_impl: {} ); @@ -178,9 +171,8 @@ macro_rules! define_label { ( $(#[$label_attr:meta])* $label_trait_name:ident, - $interner_name:ident, extra_methods: { $($trait_extra_methods:tt)* }, - extra_methods_impl: { $($interned_extra_methods_impl:tt)* } + extra_methods_impl: { $($interned_extra_methods_impl:tt)* } $(,)? ) => { $(#[$label_attr])* @@ -196,7 +188,10 @@ macro_rules! define_label { /// Returns an [`Interned`] value corresponding to `self`. fn intern(&self) -> $crate::intern::Interned where Self: ::core::marker::Sized { - $interner_name.intern(self) + static INTERNER: $crate::intern::Interner = + $crate::intern::Interner::new(); + + INTERNER.intern(self) } } @@ -252,8 +247,5 @@ macro_rules! define_label { ptr::from_ref::(self).cast::<()>().hash(state); } } - - static $interner_name: $crate::intern::Interner = - $crate::intern::Interner::new(); }; } diff --git a/crates/bevy_ecs/src/schedule/set.rs b/crates/bevy_ecs/src/schedule/set.rs index 8dd237f9c762b..019ceb220d379 100644 --- a/crates/bevy_ecs/src/schedule/set.rs +++ b/crates/bevy_ecs/src/schedule/set.rs @@ -57,7 +57,6 @@ define_label!( note = "consider annotating `{Self}` with `#[derive(ScheduleLabel)]`" )] ScheduleLabel, - SCHEDULE_LABEL_INTERNER ); define_label!( @@ -152,7 +151,6 @@ define_label!( note = "consider annotating `{Self}` with `#[derive(SystemSet)]`" )] SystemSet, - SYSTEM_SET_INTERNER, extra_methods: { /// Returns `Some` if this system set is a [`SystemTypeSet`]. fn system_type(&self) -> Option { diff --git a/crates/bevy_material/src/labels.rs b/crates/bevy_material/src/labels.rs index 6c821731501c9..22342a19f5e4a 100644 --- a/crates/bevy_material/src/labels.rs +++ b/crates/bevy_material/src/labels.rs @@ -8,7 +8,6 @@ define_label!( )] /// Labels used to uniquely identify types of material shaders ShaderLabel, - SHADER_LABEL_INTERNER ); /// A shorthand for `Interned`. @@ -22,7 +21,6 @@ define_label!( )] /// Labels used to uniquely identify types of material shaders DrawFunctionLabel, - DRAW_FUNCTION_LABEL_INTERNER ); pub type InternedDrawFunctionLabel = Interned;