Skip to content

Commit 3c65b6d

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

File tree

28 files changed

+116
-86
lines changed

28 files changed

+116
-86
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/compile_fail/tests/reflect_derive/generics_fail.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
use bevy_reflect::{GetField, Reflect, Struct, TypePath};
1+
use bevy_reflect::{
2+
structs::{GetField, Struct},
3+
Reflect, TypePath,
4+
};
25

36
#[derive(Reflect)]
47
#[reflect(from_reflect = false)]

crates/bevy_reflect/compile_fail/tests/reflect_derive/generics_fail.stderr

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
error[E0277]: `NoReflect` can not be reflected
22
--> tests/reflect_derive/generics_fail.rs:18:21
33
|
4-
18 | foo.get_field::<NoReflect>("a").unwrap();
4+
22 | foo.get_field::<NoReflect>("a").unwrap();
55
| --------- ^^^^^^^^^ the trait `Reflect` is not implemented for `NoReflect`
66
| |
77
| required by a bound introduced by this call
@@ -26,7 +26,7 @@ note: required by a bound in `bevy_reflect::GetField::get_field`
2626
error[E0277]: `NoReflect` does not provide type registration information
2727
--> tests/reflect_derive/generics_fail.rs:14:36
2828
|
29-
14 | let mut foo: Box<dyn Struct> = Box::new(Foo::<NoReflect> { a: NoReflect(42.0) });
29+
17 | let mut foo: Box<dyn Struct> = Box::new(Foo::<NoReflect> { a: NoReflect(42.0) });
3030
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Invalid Type
3131
|
3232
= help: the trait `GetTypeRegistration` is not implemented for `NoReflect`, which is required by `Foo<NoReflect>: bevy_reflect::Struct`
@@ -45,10 +45,10 @@ error[E0277]: `NoReflect` does not provide type registration information
4545
note: required for `Foo<NoReflect>` to implement `bevy_reflect::Struct`
4646
--> tests/reflect_derive/generics_fail.rs:3:10
4747
|
48-
3 | #[derive(Reflect)]
48+
6 | #[derive(Reflect)]
4949
| ^^^^^^^ unsatisfied trait bound introduced in this `derive` macro
50-
4 | #[reflect(from_reflect = false)]
51-
5 | struct Foo<T> {
50+
7 | #[reflect(from_reflect = false)]
51+
8 | struct Foo<T> {
5252
| ^^^^^^
5353
= note: required for the cast from `Box<Foo<NoReflect>>` to `Box<(dyn bevy_reflect::Struct + 'static)>`
5454
= note: this error originates in the derive macro `Reflect` (in Nightly builds, run with -Z macro-backtrace for more info)

crates/bevy_reflect/compile_fail/tests/reflect_derive/generics_structs_pass.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
//@check-pass
2-
use bevy_reflect::{GetField, Reflect};
2+
use bevy_reflect::{structs::GetField, Reflect};
33

44
#[derive(Reflect)]
55
#[reflect(from_reflect = false)]

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 {

0 commit comments

Comments
 (0)