Skip to content

Commit

Permalink
Moves intern and label modules into bevy_ecs (#12772)
Browse files Browse the repository at this point in the history
# Objective

- Attempts to solve two items from
#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::label::DynEq` imports with
`bevy_ecs::label::DynEq` imports.
- Replace `bevy_utils::label::DynHash` imports with
`bevy_ecs::label::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>
  • Loading branch information
mnmaita and james7132 authored Apr 8, 2024
1 parent 3fc0c68 commit 0c78bf3
Show file tree
Hide file tree
Showing 8 changed files with 27 additions and 22 deletions.
7 changes: 4 additions & 3 deletions crates/bevy_app/src/app.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,25 @@ use crate::{
};
pub use bevy_derive::AppLabel;
use bevy_ecs::{
intern::Interned,
prelude::*,
schedule::{ScheduleBuildSettings, ScheduleLabel},
system::SystemId,
};
#[cfg(feature = "trace")]
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::panic::{catch_unwind, resume_unwind, AssertUnwindSafe};
use thiserror::Error;

bevy_utils::define_label!(
bevy_ecs::define_label!(
/// A strongly-typed class of labels used to identify an [`App`].
AppLabel,
APP_LABEL_INTERNER
);

pub use bevy_utils::label::DynEq;
pub use bevy_ecs::label::DynEq;

/// A shorthand for `Interned<dyn AppLabel>`.
pub type InternedAppLabel = Interned<dyn AppLabel>;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ use std::{
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.
///
Expand All @@ -26,7 +26,7 @@ use crate::HashSet;
// 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)]
/// struct Value(i32);
/// impl Internable for Value {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ where
/// # Example
///
/// ```
/// # use bevy_utils::define_label;
/// # use bevy_ecs::define_label;
/// define_label!(
/// /// Documentation of label trait
/// MyNewLabelTrait,
Expand Down Expand Up @@ -125,7 +125,7 @@ macro_rules! define_label {
/// Feeds this value into the given [`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>
where Self: Sized {
$interner_name.intern(self)
Expand Down Expand Up @@ -175,7 +175,7 @@ macro_rules! define_label {

fn ref_eq(&self, other: &Self) -> bool {
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 {
false
}
Expand All @@ -184,7 +184,7 @@ macro_rules! define_label {
fn ref_hash<H: ::std::hash::Hasher>(&self, state: &mut H) {
use ::std::hash::Hash;
self.as_dyn_eq().type_id().hash(state);
(self as *const Self as *const ()).hash(state);
(self as *const Self).cast::<()>().hash(state);
}
}

Expand Down
2 changes: 2 additions & 0 deletions crates/bevy_ecs/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ pub mod component;
pub mod entity;
pub mod event;
pub mod identifier;
pub mod intern;
pub mod label;
pub mod query;
#[cfg(feature = "bevy_reflect")]
pub mod reflect;
Expand Down
16 changes: 9 additions & 7 deletions crates/bevy_ecs/src/schedule/set.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,20 @@ use std::fmt::Debug;
use std::hash::{Hash, Hasher};
use std::marker::PhantomData;

pub use crate::label::DynEq;
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::{
ExclusiveFunctionSystem, ExclusiveSystemParamFunction, FunctionSystem,
IsExclusiveFunctionSystem, IsFunctionSystem, SystemParamFunction,
use crate::{
define_label,
intern::Interned,
system::{
ExclusiveFunctionSystem, ExclusiveSystemParamFunction, FunctionSystem,
IsExclusiveFunctionSystem, IsFunctionSystem, SystemParamFunction,
},
};

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,
SCHEDULE_LABEL_INTERNER
);
Expand Down
4 changes: 2 additions & 2 deletions crates/bevy_render/src/render_graph/graph.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ use crate::{
},
renderer::RenderContext,
};
use bevy_ecs::{prelude::World, system::Resource};
use bevy_utils::{define_label, intern::Interned, HashMap};
use bevy_ecs::{define_label, intern::Interned, prelude::World, system::Resource};
use bevy_utils::HashMap;
use std::fmt::Debug;

use super::{EdgeExistence, InternedRenderLabel, IntoRenderNodeArray};
Expand Down
6 changes: 4 additions & 2 deletions crates/bevy_render/src/render_graph/node.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,14 @@ use crate::{
},
renderer::RenderContext,
};
pub use bevy_ecs::label::DynEq;
use bevy_ecs::{
define_label,
intern::Interned,
query::{QueryItem, QueryState, ReadOnlyQueryData},
world::{FromWorld, World},
};
pub use bevy_utils::label::DynEq;
use bevy_utils::{all_tuples_with_size, define_label, intern::Interned};
use bevy_utils::all_tuples_with_size;
use downcast_rs::{impl_downcast, Downcast};
use std::fmt::Debug;
use thiserror::Error;
Expand Down
2 changes: 0 additions & 2 deletions crates/bevy_utils/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,13 @@ pub mod prelude {
}

pub mod futures;
pub mod label;
mod short_names;
pub use short_names::get_short_name;
pub mod synccell;
pub mod syncunsafecell;

mod cow_arc;
mod default;
pub mod intern;
mod once;
mod parallel_queue;

Expand Down

0 comments on commit 0c78bf3

Please sign in to comment.