From 02a9ed4b0b0c231a71951543c98550a2de723d0e Mon Sep 17 00:00:00 2001 From: Benjamin Brienen Date: Sat, 21 Sep 2024 22:52:46 +0200 Subject: [PATCH] move ShortName to bevy_reflect (#15340) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Objective - Goal is to minimize bevy_utils #11478 ## Solution - Move the file short_name wholesale into bevy_reflect ## Testing - Unit tests - CI ## Migration Guide - References to `bevy_utils::ShortName` should instead now be `bevy_reflect::ShortName`. --------- Co-authored-by: François Mockers --- crates/bevy_asset/src/handle.rs | 3 +-- crates/bevy_ecs/src/schedule/schedule.rs | 16 ++++++++++++---- .../src/valid_parent_check_plugin.rs | 4 +++- crates/bevy_reflect/Cargo.toml | 3 ++- crates/bevy_reflect/src/lib.rs | 4 +++- .../src/short_name.rs} | 2 +- crates/bevy_utils/src/lib.rs | 2 -- 7 files changed, 22 insertions(+), 12 deletions(-) rename crates/{bevy_utils/src/short_names.rs => bevy_reflect/src/short_name.rs} (99%) diff --git a/crates/bevy_asset/src/handle.rs b/crates/bevy_asset/src/handle.rs index 5f78dc76c6d70..25bfee6cf7ca0 100644 --- a/crates/bevy_asset/src/handle.rs +++ b/crates/bevy_asset/src/handle.rs @@ -3,8 +3,7 @@ use crate::{ UntypedAssetId, }; use bevy_ecs::prelude::*; -use bevy_reflect::{std_traits::ReflectDefault, Reflect, TypePath}; -use bevy_utils::ShortName; +use bevy_reflect::{std_traits::ReflectDefault, Reflect, ShortName, TypePath}; use crossbeam_channel::{Receiver, Sender}; use std::{ any::TypeId, diff --git a/crates/bevy_ecs/src/schedule/schedule.rs b/crates/bevy_ecs/src/schedule/schedule.rs index 5b7756ab1369e..1185949388347 100644 --- a/crates/bevy_ecs/src/schedule/schedule.rs +++ b/crates/bevy_ecs/src/schedule/schedule.rs @@ -246,7 +246,7 @@ pub enum Chain { /// fn system_one() { println!("System 1 works!") } /// fn system_two() { println!("System 2 works!") } /// fn system_three() { println!("System 3 works!") } -/// +/// /// fn main() { /// let mut world = World::new(); /// let mut schedule = Schedule::default(); @@ -1582,7 +1582,7 @@ impl ScheduleGraph { #[inline] fn get_node_name_inner(&self, id: &NodeId, report_sets: bool) -> String { - let mut name = match id { + let name = match id { NodeId::System(_) => { let name = self.systems[id.index()].get().unwrap().name().to_string(); if report_sets { @@ -1607,9 +1607,15 @@ impl ScheduleGraph { } } }; - if self.settings.use_shortnames { - name = bevy_utils::ShortName(&name).to_string(); + #[cfg(feature = "bevy_reflect")] + { + if self.settings.use_shortnames { + bevy_reflect::ShortName(&name).to_string() + } else { + name + } } + #[cfg(not(feature = "bevy_reflect"))] name } @@ -2012,6 +2018,7 @@ pub struct ScheduleBuildSettings { /// If set to true, node names will be shortened instead of the fully qualified type path. /// /// Defaults to `true`. + #[cfg(feature = "bevy_reflect")] pub use_shortnames: bool, /// If set to true, report all system sets the conflicting systems are part of. /// @@ -2033,6 +2040,7 @@ impl ScheduleBuildSettings { ambiguity_detection: LogLevel::Ignore, hierarchy_detection: LogLevel::Warn, auto_insert_apply_deferred: true, + #[cfg(feature = "bevy_reflect")] use_shortnames: true, report_sets: true, } diff --git a/crates/bevy_hierarchy/src/valid_parent_check_plugin.rs b/crates/bevy_hierarchy/src/valid_parent_check_plugin.rs index b190885723be9..ef3aebd83d60d 100644 --- a/crates/bevy_hierarchy/src/valid_parent_check_plugin.rs +++ b/crates/bevy_hierarchy/src/valid_parent_check_plugin.rs @@ -4,7 +4,9 @@ use std::marker::PhantomData; use crate::Parent; use bevy_ecs::prelude::*; #[cfg(feature = "bevy_app")] -use bevy_utils::{HashSet, ShortName}; +use bevy_reflect::ShortName; +#[cfg(feature = "bevy_app")] +use bevy_utils::HashSet; /// When enabled, runs [`check_hierarchy_component_has_valid_parent`]. /// diff --git a/crates/bevy_reflect/Cargo.toml b/crates/bevy_reflect/Cargo.toml index c86a92e852603..4a52d9fd3cc0c 100644 --- a/crates/bevy_reflect/Cargo.toml +++ b/crates/bevy_reflect/Cargo.toml @@ -10,7 +10,7 @@ keywords = ["bevy"] rust-version = "1.76.0" [features] -default = ["smallvec", "debug"] +default = ["smallvec", "debug", "alloc"] # When enabled, provides Bevy-related reflection implementations bevy = ["smallvec", "smol_str"] glam = ["dep:glam"] @@ -25,6 +25,7 @@ debug_stack = [] documentation = ["bevy_reflect_derive/documentation"] # Enables function reflection functions = ["bevy_reflect_derive/functions"] +alloc = [] [dependencies] # bevy diff --git a/crates/bevy_reflect/src/lib.rs b/crates/bevy_reflect/src/lib.rs index 7af6020005ecd..c4326cff6f49c 100644 --- a/crates/bevy_reflect/src/lib.rs +++ b/crates/bevy_reflect/src/lib.rs @@ -549,6 +549,7 @@ mod reflect; mod reflectable; mod remote; mod set; +mod short_name; mod struct_trait; mod tuple; mod tuple_struct; @@ -615,6 +616,7 @@ pub use type_registry::*; pub use bevy_reflect_derive::*; pub use erased_serde; +pub use short_name::ShortName; extern crate alloc; @@ -2366,7 +2368,7 @@ bevy_reflect::tests::Test { fn short_type_path() -> &'static str { static CELL: GenericTypePathCell = GenericTypePathCell::new(); - CELL.get_or_insert::(|| bevy_utils::ShortName::of::().to_string()) + CELL.get_or_insert::(|| ShortName::of::().to_string()) } fn type_ident() -> Option<&'static str> { diff --git a/crates/bevy_utils/src/short_names.rs b/crates/bevy_reflect/src/short_name.rs similarity index 99% rename from crates/bevy_utils/src/short_names.rs rename to crates/bevy_reflect/src/short_name.rs index d14548b6815f2..24f01a8ca1946 100644 --- a/crates/bevy_utils/src/short_names.rs +++ b/crates/bevy_reflect/src/short_name.rs @@ -14,7 +14,7 @@ /// # Examples /// /// ```rust -/// # use bevy_utils::ShortName; +/// # use bevy_reflect::ShortName; /// # /// # mod foo { /// # pub mod bar { diff --git a/crates/bevy_utils/src/lib.rs b/crates/bevy_utils/src/lib.rs index eaa197c0384ea..53442f77222fa 100644 --- a/crates/bevy_utils/src/lib.rs +++ b/crates/bevy_utils/src/lib.rs @@ -25,8 +25,6 @@ pub mod prelude { } pub mod futures; -mod short_names; -pub use short_names::ShortName; pub mod synccell; pub mod syncunsafecell;