Skip to content

Commit 44a4933

Browse files
committed
Move struct-like exports to crate::structs
1 parent 9e4d40c commit 44a4933

File tree

25 files changed

+106
-79
lines changed

25 files changed

+106
-79
lines changed

benches/benches/bevy_reflect/struct.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
use core::{hint::black_box, time::Duration};
22

33
use benches::bench;
4-
use bevy_reflect::{DynamicStruct, GetField, PartialReflect, Reflect, Struct};
4+
use bevy_reflect::{
5+
structs::{DynamicStruct, GetField, Struct},
6+
PartialReflect, Reflect,
7+
};
58
use criterion::{
69
criterion_group, measurement::Measurement, AxisScale, BatchSize, BenchmarkGroup, BenchmarkId,
710
Criterion, PlotConfiguration, Throughput,

crates/bevy_reflect/derive/src/derive_data.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -648,15 +648,15 @@ impl<'a> ReflectStruct<'a> {
648648
pub fn to_info_tokens(&self, is_tuple: bool) -> proc_macro2::TokenStream {
649649
let bevy_reflect_path = self.meta().bevy_reflect_path();
650650

651-
let (info_variant, info_struct) = if is_tuple {
651+
let (info_variant, info_struct): (_, Path) = if is_tuple {
652652
(
653653
Ident::new("TupleStruct", Span::call_site()),
654-
Ident::new("TupleStructInfo", Span::call_site()),
654+
parse_str("TupleStructInfo").expect("should be a valid path"),
655655
)
656656
} else {
657657
(
658658
Ident::new("Struct", Span::call_site()),
659-
Ident::new("StructInfo", Span::call_site()),
659+
parse_str("structs::StructInfo").expect("should be a valid path"),
660660
)
661661
};
662662

crates/bevy_reflect/derive/src/from_reflect.rs

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use bevy_macro_utils::as_member;
1010
use bevy_macro_utils::fq_std::{FQClone, FQDefault, FQOption};
1111
use proc_macro2::Span;
1212
use quote::{quote, ToTokens};
13-
use syn::{Field, Ident, Lit, LitInt, LitStr, Member};
13+
use syn::{parse_str, Field, Ident, Lit, LitInt, LitStr, Member, Path};
1414

1515
/// Implements `FromReflect` for the given struct
1616
pub(crate) fn impl_struct(reflect_struct: &ReflectStruct) -> proc_macro2::TokenStream {
@@ -126,14 +126,20 @@ fn impl_struct_internal(
126126
let bevy_reflect_path = reflect_struct.meta().bevy_reflect_path();
127127

128128
let ref_struct = Ident::new("__ref_struct", Span::call_site());
129-
let ref_struct_type = if is_tuple {
130-
Ident::new("TupleStruct", Span::call_site())
129+
let (ref_struct_type, ref_struct_path) = if is_tuple {
130+
(
131+
Ident::new("TupleStruct", Span::call_site()),
132+
parse_str("TupleStruct").expect("should be a valid path"),
133+
)
131134
} else {
132-
Ident::new("Struct", Span::call_site())
135+
(
136+
Ident::new("Struct", Span::call_site()),
137+
parse_str("structs::Struct").expect("should be a valid path"),
138+
)
133139
};
134140

135141
let MemberValuePair(active_members, active_values) =
136-
get_active_fields(reflect_struct, &ref_struct, &ref_struct_type, is_tuple);
142+
get_active_fields(reflect_struct, &ref_struct, &ref_struct_path, is_tuple);
137143

138144
let is_defaultable = reflect_struct.meta().attrs().contains(REFLECT_DEFAULT);
139145

@@ -236,7 +242,7 @@ fn get_ignored_fields(reflect_struct: &ReflectStruct) -> MemberValuePair {
236242
fn get_active_fields(
237243
reflect_struct: &ReflectStruct,
238244
dyn_struct_name: &Ident,
239-
struct_type: &Ident,
245+
struct_type: &Path,
240246
is_tuple: bool,
241247
) -> MemberValuePair {
242248
let bevy_reflect_path = reflect_struct.meta().bevy_reflect_path();

crates/bevy_reflect/derive/src/impls/structs.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ pub(crate) fn impl_struct(reflect_struct: &ReflectStruct) -> proc_macro2::TokenS
4040
let full_reflect_impl = impl_full_reflect(&where_clause_options);
4141
let common_methods = common_partial_reflect_methods(
4242
reflect_struct.meta(),
43-
|| Some(quote!(#bevy_reflect_path::struct_partial_eq)),
43+
|| Some(quote!(#bevy_reflect_path::structs::struct_partial_eq)),
4444
|| None,
4545
);
4646
let clone_fn = reflect_struct.get_clone_impl();
@@ -78,7 +78,7 @@ pub(crate) fn impl_struct(reflect_struct: &ReflectStruct) -> proc_macro2::TokenS
7878

7979
#auto_register
8080

81-
impl #impl_generics #bevy_reflect_path::Struct for #struct_path #ty_generics #where_reflect_clause {
81+
impl #impl_generics #bevy_reflect_path::structs::Struct for #struct_path #ty_generics #where_reflect_clause {
8282
fn field(&self, name: &str) -> #FQOption<&dyn #bevy_reflect_path::PartialReflect> {
8383
match name {
8484
#(#field_names => #fqoption::Some(#fields_ref),)*
@@ -118,12 +118,12 @@ pub(crate) fn impl_struct(reflect_struct: &ReflectStruct) -> proc_macro2::TokenS
118118
#field_count
119119
}
120120

121-
fn iter_fields(&self) -> #bevy_reflect_path::FieldIter {
122-
#bevy_reflect_path::FieldIter::new(self)
121+
fn iter_fields(&self) -> #bevy_reflect_path::structs::FieldIter {
122+
#bevy_reflect_path::structs::FieldIter::new(self)
123123
}
124124

125-
fn to_dynamic_struct(&self) -> #bevy_reflect_path::DynamicStruct {
126-
let mut dynamic: #bevy_reflect_path::DynamicStruct = #FQDefault::default();
125+
fn to_dynamic_struct(&self) -> #bevy_reflect_path::structs::DynamicStruct {
126+
let mut dynamic: #bevy_reflect_path::structs::DynamicStruct = #FQDefault::default();
127127
dynamic.set_represented_type(#bevy_reflect_path::PartialReflect::get_represented_type_info(self));
128128
#(dynamic.insert_boxed(#field_names, #bevy_reflect_path::PartialReflect::to_dynamic(#fields_ref));)*
129129
dynamic
@@ -143,9 +143,9 @@ pub(crate) fn impl_struct(reflect_struct: &ReflectStruct) -> proc_macro2::TokenS
143143
) -> #FQResult<(), #bevy_reflect_path::ApplyError> {
144144
if let #bevy_reflect_path::ReflectRef::Struct(struct_value)
145145
= #bevy_reflect_path::PartialReflect::reflect_ref(value) {
146-
for (i, value) in ::core::iter::Iterator::enumerate(#bevy_reflect_path::Struct::iter_fields(struct_value)) {
147-
let name = #bevy_reflect_path::Struct::name_at(struct_value, i).unwrap();
148-
if let #FQOption::Some(v) = #bevy_reflect_path::Struct::field_mut(self, name) {
146+
for (i, value) in ::core::iter::Iterator::enumerate(#bevy_reflect_path::structs::Struct::iter_fields(struct_value)) {
147+
let name = #bevy_reflect_path::structs::Struct::name_at(struct_value, i).unwrap();
148+
if let #FQOption::Some(v) = #bevy_reflect_path::structs::Struct::field_mut(self, name) {
149149
#bevy_reflect_path::PartialReflect::try_apply(v, value)?;
150150
}
151151
}

crates/bevy_reflect/src/enums/dynamic_enum.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@ use bevy_reflect_derive::impl_type_path;
22

33
use crate::{
44
enums::{enum_debug, enum_hash, enum_partial_eq, Enum, VariantFieldIter, VariantType},
5-
ApplyError, DynamicStruct, DynamicTuple, PartialReflect, Reflect, ReflectKind, ReflectMut,
6-
ReflectOwned, ReflectRef, Struct, Tuple, TypeInfo,
5+
structs::{DynamicStruct, Struct},
6+
ApplyError, DynamicTuple, PartialReflect, Reflect, ReflectKind, ReflectMut, ReflectOwned,
7+
ReflectRef, Tuple, TypeInfo,
78
};
89

910
use alloc::{boxed::Box, string::String};

crates/bevy_reflect/src/enums/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ pub use variants::*;
1313

1414
#[cfg(test)]
1515
mod tests {
16-
use crate::{enums::*, *};
16+
use crate::{enums::*, structs::*, *};
1717
use alloc::boxed::Box;
1818

1919
#[derive(Reflect, Debug, PartialEq)]

crates/bevy_reflect/src/from_reflect.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ use alloc::boxed::Box;
2020
/// See the [crate-level documentation] to see how this trait can be used.
2121
///
2222
/// [derive macro]: bevy_reflect_derive::FromReflect
23-
/// [`DynamicStruct`]: crate::DynamicStruct
23+
/// [`DynamicStruct`]: crate::structs::DynamicStruct
2424
/// [crate-level documentation]: crate
2525
#[diagnostic::on_unimplemented(
2626
message = "`{Self}` does not implement `FromReflect` so cannot be created through reflection",
@@ -38,7 +38,7 @@ pub trait FromReflect: Reflect + Sized {
3838
/// rather than a boxed dynamic type (e.g. [`DynamicStruct`], [`DynamicList`], etc.).
3939
///
4040
/// [`from_reflect`]: Self::from_reflect
41-
/// [`DynamicStruct`]: crate::DynamicStruct
41+
/// [`DynamicStruct`]: crate::structs::DynamicStruct
4242
/// [`DynamicList`]: crate::list::DynamicList
4343
fn take_from_reflect(
4444
reflect: Box<dyn PartialReflect>,
@@ -100,7 +100,7 @@ pub trait FromReflect: Reflect + Sized {
100100
/// assert_eq!(Foo(123), concrete.take::<Foo>().unwrap());
101101
/// ```
102102
///
103-
/// [`DynamicStruct`]: crate::DynamicStruct
103+
/// [`DynamicStruct`]: crate::structs::DynamicStruct
104104
/// [`DynamicEnum`]: crate::enums::DynamicEnum
105105
#[derive(Clone)]
106106
pub struct ReflectFromReflect {

crates/bevy_reflect/src/kind.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ use thiserror::Error;
44
#[cfg(feature = "functions")]
55
use crate::func::Function;
66
use crate::{
7-
array::Array, enums::Enum, list::List, map::Map, set::Set, PartialReflect, Struct, Tuple,
8-
TupleStruct,
7+
array::Array, enums::Enum, list::List, map::Map, set::Set, structs::Struct, PartialReflect,
8+
Tuple, TupleStruct,
99
};
1010

1111
/// An enumeration of the "kinds" of a reflected type.

crates/bevy_reflect/src/lib.rs

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@
135135
//! For example, we can access our struct's fields by name using the [`Struct::field`] method.
136136
//!
137137
//! ```
138-
//! # use bevy_reflect::{PartialReflect, Reflect, Struct};
138+
//! # use bevy_reflect::{PartialReflect, Reflect, structs::Struct};
139139
//! # #[derive(Reflect)]
140140
//! # struct MyStruct {
141141
//! # foo: i32
@@ -195,7 +195,7 @@
195195
//! These dynamic types may contain any arbitrary reflected data.
196196
//!
197197
//! ```
198-
//! # use bevy_reflect::{DynamicStruct, Struct};
198+
//! # use bevy_reflect::structs::{DynamicStruct, Struct};
199199
//! let mut data = DynamicStruct::default();
200200
//! data.insert("foo", 123_i32);
201201
//! assert_eq!(Some(&123), data.field("foo").unwrap().try_downcast_ref::<i32>())
@@ -209,7 +209,7 @@
209209
//! we may pass them around just like most other reflected types.
210210
//!
211211
//! ```
212-
//! # use bevy_reflect::{DynamicStruct, PartialReflect, Reflect};
212+
//! # use bevy_reflect::{structs::DynamicStruct, PartialReflect, Reflect};
213213
//! # #[derive(Reflect)]
214214
//! # struct MyStruct {
215215
//! # foo: i32
@@ -243,7 +243,7 @@
243243
//! or when trying to make use of a reflected trait which expects the actual type.
244244
//!
245245
//! ```should_panic
246-
//! # use bevy_reflect::{DynamicStruct, PartialReflect, Reflect};
246+
//! # use bevy_reflect::{structs::DynamicStruct, PartialReflect, Reflect};
247247
//! # #[derive(Reflect)]
248248
//! # struct MyStruct {
249249
//! # foo: i32
@@ -545,11 +545,14 @@
545545
//! [`List`]: crate::list::List
546546
//! [`Set`]: crate::set::Set
547547
//! [`Map`]: crate::map::Map
548+
//! [`Struct`]: crate::structs::Struct
548549
//! [`Enum`]: crate::enums::Enum
549550
//! [`Function`]: crate::func::Function
551+
//! [`Struct::field`]: crate::structs::Struct::field
550552
//! [`DynamicArray`]: crate::array::DynamicArray
551553
//! [`DynamicList`]: crate::list::DynamicList
552554
//! [`DynamicMap`]: crate::map::DynamicMap
555+
//! [`DynamicStruct`]: crate::structs::DynamicStruct
553556
//! [`DynamicEnum`]: crate::enums::DynamicEnum
554557
//! [derive macro documentation]: derive@crate::Reflect
555558
//! [deriving `Reflect`]: derive@crate::Reflect
@@ -602,7 +605,7 @@ mod reflect;
602605
mod reflectable;
603606
mod remote;
604607
pub mod set;
605-
mod struct_trait;
608+
pub mod structs;
606609
mod tuple;
607610
mod tuple_struct;
608611
mod type_info;
@@ -653,9 +656,10 @@ pub mod prelude {
653656

654657
#[doc(hidden)]
655658
pub use crate::{
656-
reflect_trait, FromReflect, GetField, GetPath, GetTupleStructField, PartialReflect,
657-
Reflect, ReflectDeserialize, ReflectFromReflect, ReflectPath, ReflectSerialize, Struct,
658-
TupleStruct, TypePath,
659+
reflect_trait,
660+
structs::{GetField, Struct},
661+
FromReflect, GetPath, GetTupleStructField, PartialReflect, Reflect, ReflectDeserialize,
662+
ReflectFromReflect, ReflectPath, ReflectSerialize, TupleStruct, TypePath,
659663
};
660664

661665
#[cfg(feature = "functions")]
@@ -672,7 +676,6 @@ pub use path::*;
672676
pub use reflect::*;
673677
pub use reflectable::*;
674678
pub use remote::*;
675-
pub use struct_trait::*;
676679
pub use tuple::*;
677680
pub use tuple_struct::*;
678681
pub use type_info::*;
@@ -688,8 +691,9 @@ pub use erased_serde;
688691
#[doc(hidden)]
689692
pub mod __macro_exports {
690693
use crate::{
691-
array::DynamicArray, enums::DynamicEnum, list::DynamicList, map::DynamicMap, DynamicStruct,
692-
DynamicTuple, DynamicTupleStruct, GetTypeRegistration, TypeRegistry,
694+
array::DynamicArray, enums::DynamicEnum, list::DynamicList, map::DynamicMap,
695+
structs::DynamicStruct, DynamicTuple, DynamicTupleStruct, GetTypeRegistration,
696+
TypeRegistry,
693697
};
694698

695699
/// Re-exports of items from the [`alloc`] crate.
@@ -868,7 +872,7 @@ mod tests {
868872
};
869873
use static_assertions::{assert_impl_all, assert_not_impl_all};
870874

871-
use super::{array::*, enums::*, list::*, map::*, prelude::*, *};
875+
use super::{array::*, enums::*, list::*, map::*, prelude::*, structs::*, *};
872876
use crate::{
873877
serde::{ReflectDeserializer, ReflectSerializer},
874878
utility::GenericTypePathCell,

crates/bevy_reflect/src/path/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ impl<'a> ReflectPath<'a> for &'a str {
238238
/// );
239239
/// ```
240240
///
241-
/// [`Struct`]: crate::Struct
241+
/// [`Struct`]: crate::structs::Struct
242242
/// [`Tuple`]: crate::Tuple
243243
/// [`TupleStruct`]: crate::TupleStruct
244244
/// [`List`]: crate::list::List
@@ -274,7 +274,7 @@ pub trait GetPath: PartialReflect {
274274
/// The downcast will fail if this value is not of type `T`
275275
/// (which may be the case when using dynamic types like [`DynamicStruct`]).
276276
///
277-
/// [`DynamicStruct`]: crate::DynamicStruct
277+
/// [`DynamicStruct`]: crate::structs::DynamicStruct
278278
fn path<'p, T: Reflect>(&self, path: impl ReflectPath<'p>) -> PathResult<'p, &T> {
279279
path.element(self.as_partial_reflect())
280280
}
@@ -285,7 +285,7 @@ pub trait GetPath: PartialReflect {
285285
/// The downcast will fail if this value is not of type `T`
286286
/// (which may be the case when using dynamic types like [`DynamicStruct`]).
287287
///
288-
/// [`DynamicStruct`]: crate::DynamicStruct
288+
/// [`DynamicStruct`]: crate::structs::DynamicStruct
289289
fn path_mut<'p, T: Reflect>(&mut self, path: impl ReflectPath<'p>) -> PathResult<'p, &mut T> {
290290
path.element_mut(self.as_partial_reflect_mut())
291291
}

0 commit comments

Comments
 (0)