@@ -282,17 +282,16 @@ pub fn derive_has_schema(input: TokenStream) -> TokenStream {
282282
283283 let register_schema = if input. generic_params ( ) . is_some ( ) {
284284 quote ! {
285- static S : OnceLock <RwLock <HashMap <TypeId , & ' static #schema_mod:: Schema >>> = OnceLock :: new( ) ;
286285 let schema = {
287- S . get_or_init ( Default :: default )
286+ #schema_mod :: registry :: GENERIC_SCHEMA_CACHE
288287 . read( )
289288 . get( & TypeId :: of:: <Self >( ) )
290289 . copied( )
291290 } ;
292291 schema. unwrap_or_else( || {
293292 let schema = compute_schema( ) ;
294293
295- S . get_or_init ( Default :: default )
294+ #schema_mod :: registry :: GENERIC_SCHEMA_CACHE
296295 . write( )
297296 . insert( TypeId :: of:: <Self >( ) , schema) ;
298297
@@ -395,27 +394,22 @@ pub fn derive_has_schema(input: TokenStream) -> TokenStream {
395394 quote ! {
396395 unsafe impl <#impl_bounds> #schema_mod:: HasSchema for #name<#struct_params> {
397396 fn schema( ) -> & ' static #schema_mod:: Schema {
398- use :: std:: sync:: OnceLock ;
399- use :: std:: any:: TypeId ;
400- use bones_utils:: HashMap ;
401- use parking_lot:: RwLock ;
402- static S : OnceLock <RwLock <HashMap <TypeId , & ' static #schema_mod:: Schema >>> = OnceLock :: new( ) ;
397+ use :: std:: { any:: TypeId , sync:: OnceLock } ;
403398 let schema = {
404- S . get_or_init ( Default :: default )
399+ #schema_mod :: registry :: GENERIC_SCHEMA_CACHE
405400 . read( )
406401 . get( & TypeId :: of:: <Self >( ) )
407402 . copied( )
408403 } ;
409404 schema. unwrap_or_else( || {
410405 let schema = #schema_register;
411406
412- S . get_or_init ( Default :: default )
407+ #schema_mod :: registry :: GENERIC_SCHEMA_CACHE
413408 . write( )
414409 . insert( TypeId :: of:: <Self >( ) , schema) ;
415410
416411 schema
417412 } )
418-
419413 }
420414 }
421415 }
0 commit comments