Moves intern and label modules into bevy_ecs (#12772)
# Objective - Attempts to solve two items from https://github.com/bevyengine/bevy/issues/11478. ## Solution - Moved `intern` module from `bevy_utils` into `bevy_ecs` crate and updated all relevant imports. - Moved `label` module from `bevy_utils` into `bevy_ecs` crate and updated all relevant imports. --- ## Migration Guide - Replace `bevy_utils::define_label` imports with `bevy_ecs::define_label` imports. - Replace `bevy_utils:🏷️:DynEq` imports with `bevy_ecs:🏷️:DynEq` imports. - Replace `bevy_utils:🏷️:DynHash` imports with `bevy_ecs:🏷️:DynHash` imports. - Replace `bevy_utils::intern::Interned` imports with `bevy_ecs::intern::Interned` imports. - Replace `bevy_utils::intern::Internable` imports with `bevy_ecs::intern::Internable` imports. - Replace `bevy_utils::intern::Interner` imports with `bevy_ecs::intern::Interner` imports. --------- Co-authored-by: James Liu <contact@jamessliu.com>
This commit is contained in:
parent
3fc0c6869d
commit
0c78bf3bb0
@ -3,24 +3,25 @@ use crate::{
|
|||||||
};
|
};
|
||||||
pub use bevy_derive::AppLabel;
|
pub use bevy_derive::AppLabel;
|
||||||
use bevy_ecs::{
|
use bevy_ecs::{
|
||||||
|
intern::Interned,
|
||||||
prelude::*,
|
prelude::*,
|
||||||
schedule::{ScheduleBuildSettings, ScheduleLabel},
|
schedule::{ScheduleBuildSettings, ScheduleLabel},
|
||||||
system::SystemId,
|
system::SystemId,
|
||||||
};
|
};
|
||||||
#[cfg(feature = "trace")]
|
#[cfg(feature = "trace")]
|
||||||
use bevy_utils::tracing::info_span;
|
use bevy_utils::tracing::info_span;
|
||||||
use bevy_utils::{intern::Interned, tracing::debug, HashMap};
|
use bevy_utils::{tracing::debug, HashMap};
|
||||||
use std::fmt::Debug;
|
use std::fmt::Debug;
|
||||||
use std::panic::{catch_unwind, resume_unwind, AssertUnwindSafe};
|
use std::panic::{catch_unwind, resume_unwind, AssertUnwindSafe};
|
||||||
use thiserror::Error;
|
use thiserror::Error;
|
||||||
|
|
||||||
bevy_utils::define_label!(
|
bevy_ecs::define_label!(
|
||||||
/// A strongly-typed class of labels used to identify an [`App`].
|
/// A strongly-typed class of labels used to identify an [`App`].
|
||||||
AppLabel,
|
AppLabel,
|
||||||
APP_LABEL_INTERNER
|
APP_LABEL_INTERNER
|
||||||
);
|
);
|
||||||
|
|
||||||
pub use bevy_utils::label::DynEq;
|
pub use bevy_ecs::label::DynEq;
|
||||||
|
|
||||||
/// A shorthand for `Interned<dyn AppLabel>`.
|
/// A shorthand for `Interned<dyn AppLabel>`.
|
||||||
pub type InternedAppLabel = Interned<dyn AppLabel>;
|
pub type InternedAppLabel = Interned<dyn AppLabel>;
|
||||||
|
@ -11,7 +11,7 @@ use std::{
|
|||||||
sync::{OnceLock, PoisonError, RwLock},
|
sync::{OnceLock, PoisonError, RwLock},
|
||||||
};
|
};
|
||||||
|
|
||||||
use crate::HashSet;
|
use bevy_utils::HashSet;
|
||||||
|
|
||||||
/// An interned value. Will stay valid until the end of the program and will not drop.
|
/// An interned value. Will stay valid until the end of the program and will not drop.
|
||||||
///
|
///
|
||||||
@ -26,7 +26,7 @@ use crate::HashSet;
|
|||||||
// NOTE: This type must NEVER implement Borrow since it does not obey that trait's invariants.
|
// NOTE: This type must NEVER implement Borrow since it does not obey that trait's invariants.
|
||||||
///
|
///
|
||||||
/// ```
|
/// ```
|
||||||
/// # use bevy_utils::intern::*;
|
/// # use bevy_ecs::intern::*;
|
||||||
/// #[derive(PartialEq, Eq, Hash, Debug)]
|
/// #[derive(PartialEq, Eq, Hash, Debug)]
|
||||||
/// struct Value(i32);
|
/// struct Value(i32);
|
||||||
/// impl Internable for Value {
|
/// impl Internable for Value {
|
@ -63,7 +63,7 @@ where
|
|||||||
/// # Example
|
/// # Example
|
||||||
///
|
///
|
||||||
/// ```
|
/// ```
|
||||||
/// # use bevy_utils::define_label;
|
/// # use bevy_ecs::define_label;
|
||||||
/// define_label!(
|
/// define_label!(
|
||||||
/// /// Documentation of label trait
|
/// /// Documentation of label trait
|
||||||
/// MyNewLabelTrait,
|
/// MyNewLabelTrait,
|
||||||
@ -125,7 +125,7 @@ macro_rules! define_label {
|
|||||||
/// Feeds this value into the given [`Hasher`].
|
/// Feeds this value into the given [`Hasher`].
|
||||||
fn dyn_hash(&self, state: &mut dyn ::std::hash::Hasher);
|
fn dyn_hash(&self, state: &mut dyn ::std::hash::Hasher);
|
||||||
|
|
||||||
/// Returns an [`Interned`](bevy_utils::intern::Interned) value corresponding to `self`.
|
/// Returns an [`Interned`] value corresponding to `self`.
|
||||||
fn intern(&self) -> $crate::intern::Interned<dyn $label_trait_name>
|
fn intern(&self) -> $crate::intern::Interned<dyn $label_trait_name>
|
||||||
where Self: Sized {
|
where Self: Sized {
|
||||||
$interner_name.intern(self)
|
$interner_name.intern(self)
|
||||||
@ -175,7 +175,7 @@ macro_rules! define_label {
|
|||||||
|
|
||||||
fn ref_eq(&self, other: &Self) -> bool {
|
fn ref_eq(&self, other: &Self) -> bool {
|
||||||
if self.as_dyn_eq().type_id() == other.as_dyn_eq().type_id() {
|
if self.as_dyn_eq().type_id() == other.as_dyn_eq().type_id() {
|
||||||
(self as *const Self as *const ()) == (other as *const Self as *const ())
|
(self as *const Self).cast::<()>() == (other as *const Self).cast::<()>()
|
||||||
} else {
|
} else {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
@ -184,7 +184,7 @@ macro_rules! define_label {
|
|||||||
fn ref_hash<H: ::std::hash::Hasher>(&self, state: &mut H) {
|
fn ref_hash<H: ::std::hash::Hasher>(&self, state: &mut H) {
|
||||||
use ::std::hash::Hash;
|
use ::std::hash::Hash;
|
||||||
self.as_dyn_eq().type_id().hash(state);
|
self.as_dyn_eq().type_id().hash(state);
|
||||||
(self as *const Self as *const ()).hash(state);
|
(self as *const Self).cast::<()>().hash(state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -18,6 +18,8 @@ pub mod component;
|
|||||||
pub mod entity;
|
pub mod entity;
|
||||||
pub mod event;
|
pub mod event;
|
||||||
pub mod identifier;
|
pub mod identifier;
|
||||||
|
pub mod intern;
|
||||||
|
pub mod label;
|
||||||
pub mod query;
|
pub mod query;
|
||||||
#[cfg(feature = "bevy_reflect")]
|
#[cfg(feature = "bevy_reflect")]
|
||||||
pub mod reflect;
|
pub mod reflect;
|
||||||
|
@ -3,18 +3,20 @@ use std::fmt::Debug;
|
|||||||
use std::hash::{Hash, Hasher};
|
use std::hash::{Hash, Hasher};
|
||||||
use std::marker::PhantomData;
|
use std::marker::PhantomData;
|
||||||
|
|
||||||
|
pub use crate::label::DynEq;
|
||||||
pub use bevy_ecs_macros::{ScheduleLabel, SystemSet};
|
pub use bevy_ecs_macros::{ScheduleLabel, SystemSet};
|
||||||
use bevy_utils::define_label;
|
|
||||||
use bevy_utils::intern::Interned;
|
|
||||||
pub use bevy_utils::label::DynEq;
|
|
||||||
|
|
||||||
use crate::system::{
|
use crate::{
|
||||||
ExclusiveFunctionSystem, ExclusiveSystemParamFunction, FunctionSystem,
|
define_label,
|
||||||
IsExclusiveFunctionSystem, IsFunctionSystem, SystemParamFunction,
|
intern::Interned,
|
||||||
|
system::{
|
||||||
|
ExclusiveFunctionSystem, ExclusiveSystemParamFunction, FunctionSystem,
|
||||||
|
IsExclusiveFunctionSystem, IsFunctionSystem, SystemParamFunction,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
define_label!(
|
define_label!(
|
||||||
/// A strongly-typed class of labels used to identify an [`Schedule`].
|
/// A strongly-typed class of labels used to identify a [`Schedule`](crate::schedule::Schedule).
|
||||||
ScheduleLabel,
|
ScheduleLabel,
|
||||||
SCHEDULE_LABEL_INTERNER
|
SCHEDULE_LABEL_INTERNER
|
||||||
);
|
);
|
||||||
|
@ -5,8 +5,8 @@ use crate::{
|
|||||||
},
|
},
|
||||||
renderer::RenderContext,
|
renderer::RenderContext,
|
||||||
};
|
};
|
||||||
use bevy_ecs::{prelude::World, system::Resource};
|
use bevy_ecs::{define_label, intern::Interned, prelude::World, system::Resource};
|
||||||
use bevy_utils::{define_label, intern::Interned, HashMap};
|
use bevy_utils::HashMap;
|
||||||
use std::fmt::Debug;
|
use std::fmt::Debug;
|
||||||
|
|
||||||
use super::{EdgeExistence, InternedRenderLabel, IntoRenderNodeArray};
|
use super::{EdgeExistence, InternedRenderLabel, IntoRenderNodeArray};
|
||||||
|
@ -5,12 +5,14 @@ use crate::{
|
|||||||
},
|
},
|
||||||
renderer::RenderContext,
|
renderer::RenderContext,
|
||||||
};
|
};
|
||||||
|
pub use bevy_ecs::label::DynEq;
|
||||||
use bevy_ecs::{
|
use bevy_ecs::{
|
||||||
|
define_label,
|
||||||
|
intern::Interned,
|
||||||
query::{QueryItem, QueryState, ReadOnlyQueryData},
|
query::{QueryItem, QueryState, ReadOnlyQueryData},
|
||||||
world::{FromWorld, World},
|
world::{FromWorld, World},
|
||||||
};
|
};
|
||||||
pub use bevy_utils::label::DynEq;
|
use bevy_utils::all_tuples_with_size;
|
||||||
use bevy_utils::{all_tuples_with_size, define_label, intern::Interned};
|
|
||||||
use downcast_rs::{impl_downcast, Downcast};
|
use downcast_rs::{impl_downcast, Downcast};
|
||||||
use std::fmt::Debug;
|
use std::fmt::Debug;
|
||||||
use thiserror::Error;
|
use thiserror::Error;
|
||||||
|
@ -16,7 +16,6 @@ pub mod prelude {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub mod futures;
|
pub mod futures;
|
||||||
pub mod label;
|
|
||||||
mod short_names;
|
mod short_names;
|
||||||
pub use short_names::get_short_name;
|
pub use short_names::get_short_name;
|
||||||
pub mod synccell;
|
pub mod synccell;
|
||||||
@ -24,7 +23,6 @@ pub mod syncunsafecell;
|
|||||||
|
|
||||||
mod cow_arc;
|
mod cow_arc;
|
||||||
mod default;
|
mod default;
|
||||||
pub mod intern;
|
|
||||||
mod once;
|
mod once;
|
||||||
mod parallel_queue;
|
mod parallel_queue;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user