1+ use  bevy_macro_utils:: BevyManifest ; 
12use  proc_macro2:: { Span ,  TokenStream } ; 
23use  quote:: { format_ident,  quote} ; 
34use  syn:: { parse_quote,  Data ,  DeriveInput ,  Fields ,  Ident ,  Path ,  Type } ; 
@@ -8,10 +9,17 @@ pub fn emit(
89    mod_name :  & ' static  str , 
910    min_struct_alignment :  usize , 
1011)  -> TokenStream  { 
12+     let  bevy_prefix_path = BevyManifest :: default ( ) 
13+         . maybe_get_path ( crate :: BEVY_RENDER ) 
14+         . unwrap_or_else ( || Path  { 
15+             leading_colon :  None , 
16+             segments :  Default :: default ( ) , 
17+         } ) ; 
18+ 
1119    let  mod_name = Ident :: new ( mod_name,  Span :: call_site ( ) ) ; 
1220    let  trait_name = Ident :: new ( trait_name,  Span :: call_site ( ) ) ; 
1321
14-     let  mod_path:  Path  = parse_quote ! ( :: bevy_crevice:: #mod_name) ; 
22+     let  mod_path:  Path  = parse_quote ! ( #bevy_prefix_path :: bevy_crevice:: #mod_name) ; 
1523    let  trait_path:  Path  = parse_quote ! ( #mod_path:: #trait_name) ; 
1624
1725    let  as_trait_name = format_ident ! ( "As{}" ,  trait_name) ; 
@@ -63,7 +71,7 @@ pub fn emit(
6371
6472    let  field_alignments = fields. iter ( ) . map ( |field| layout_alignment_of_ty ( & field. ty ) ) ; 
6573    let  struct_alignment = quote !  { 
66-         :: bevy_crevice:: internal:: max_arr( [ 
74+         #bevy_prefix_path :: bevy_crevice:: internal:: max_arr( [ 
6775            #min_struct_alignment, 
6876            #( #field_alignments, ) * 
6977        ] ) 
@@ -139,13 +147,13 @@ pub fn emit(
139147                    // We set our target alignment to the larger of the 
140148                    // alignment due to the previous field and the alignment 
141149                    // requirement of the next field. 
142-                     let  alignment = :: bevy_crevice:: internal:: max( 
150+                     let  alignment = #bevy_prefix_path :: bevy_crevice:: internal:: max( 
143151                        #next_field_or_self_alignment, 
144152                        min_alignment, 
145153                    ) ; 
146154
147155                    // Using everything we've got, compute our padding amount. 
148-                     :: bevy_crevice:: internal:: align_offset( starting_offset,  alignment) 
156+                     #bevy_prefix_path :: bevy_crevice:: internal:: align_offset( starting_offset,  alignment) 
149157                } 
150158            } 
151159        } ) 
@@ -222,7 +230,7 @@ pub fn emit(
222230                    let  size = :: core:: mem:: size_of:: <Self >( ) ; 
223231                    let  align = <Self  as  #trait_path>:: ALIGNMENT ; 
224232
225-                     let  zeroed:  Self  = :: bevy_crevice:: internal:: bytemuck:: Zeroable :: zeroed( ) ; 
233+                     let  zeroed:  Self  = #bevy_prefix_path :: bevy_crevice:: internal:: bytemuck:: Zeroable :: zeroed( ) ; 
226234
227235                    #[ derive( Debug ) ] 
228236                    struct  Field  { 
@@ -253,13 +261,13 @@ pub fn emit(
253261        #pad_fn_impls
254262        #struct_definition
255263
256-         unsafe  impl  #impl_generics :: bevy_crevice:: internal:: bytemuck:: Zeroable  for  #generated_name #ty_generics #where_clause { } 
257-         unsafe  impl  #impl_generics :: bevy_crevice:: internal:: bytemuck:: Pod  for  #generated_name #ty_generics #where_clause { } 
264+         unsafe  impl  #impl_generics #bevy_prefix_path :: bevy_crevice:: internal:: bytemuck:: Zeroable  for  #generated_name #ty_generics #where_clause { } 
265+         unsafe  impl  #impl_generics #bevy_prefix_path :: bevy_crevice:: internal:: bytemuck:: Pod  for  #generated_name #ty_generics #where_clause { } 
258266
259267        unsafe  impl  #impl_generics #mod_path:: #trait_name for  #generated_name #ty_generics #where_clause { 
260268            const  ALIGNMENT :  usize  = #struct_alignment; 
261269            const  PAD_AT_END :  bool  = true ; 
262-             type  Padded  = #padded_path<Self ,  { :: bevy_crevice:: internal:: align_offset( 
270+             type  Padded  = #padded_path<Self ,  { #bevy_prefix_path :: bevy_crevice:: internal:: align_offset( 
263271                    :: core:: mem:: size_of:: <#generated_name>( ) , 
264272                    #struct_alignment
265273                ) } >; 
@@ -272,7 +280,7 @@ pub fn emit(
272280                Self :: Output  { 
273281                    #generated_struct_field_init
274282
275-                     ..:: bevy_crevice:: internal:: bytemuck:: Zeroable :: zeroed( ) 
283+                     ..#bevy_prefix_path :: bevy_crevice:: internal:: bytemuck:: Zeroable :: zeroed( ) 
276284                } 
277285            } 
278286
0 commit comments