diff options
Diffstat (limited to 'macros')
| -rw-r--r-- | macros/src/lib.rs | 32 | 
1 files changed, 19 insertions, 13 deletions
| diff --git a/macros/src/lib.rs b/macros/src/lib.rs index 4c815db..79b1a1b 100644 --- a/macros/src/lib.rs +++ b/macros/src/lib.rs @@ -194,7 +194,7 @@ pub fn factory(args_stream: TokenStream, type_alias_stream: TokenStream) -> Toke      let FactoryMacroArgs { flags } = parse(args_stream).unwrap(); -    let is_async = flags +    let is_threadsafe = flags          .iter()          .find(|flag| flag.flag.to_string().as_str() == "threadsafe")          .map_or(false, |flag| flag.is_on.value); @@ -202,24 +202,27 @@ pub fn factory(args_stream: TokenStream, type_alias_stream: TokenStream) -> Toke      let factory_type_alias::FactoryTypeAlias {          type_alias,          factory_interface, -        arg_types, -        return_type, +        arg_types: _, +        return_type: _,      } = parse(type_alias_stream).unwrap(); -    let decl_interfaces = if is_async { +    let decl_interfaces = if is_threadsafe {          quote! {              syrette::declare_interface!(                  syrette::castable_factory::threadsafe::ThreadsafeCastableFactory< -                    #arg_types, -                    #return_type -                > -> #factory_interface, +                    (std::sync::Arc<syrette::async_di_container::AsyncDIContainer>,), +                    #factory_interface +                > -> syrette::interfaces::factory::IFactory< +                    (std::sync::Arc<syrette::async_di_container::AsyncDIContainer>,), +                    #factory_interface +                >,                  async = true              );              syrette::declare_interface!(                  syrette::castable_factory::threadsafe::ThreadsafeCastableFactory< -                    #arg_types, -                    #return_type +                    (std::sync::Arc<syrette::async_di_container::AsyncDIContainer>,), +                    #factory_interface                  > -> syrette::interfaces::any_factory::AnyThreadsafeFactory,                  async = true              ); @@ -300,17 +303,20 @@ pub fn declare_default_factory(args_stream: TokenStream) -> TokenStream          return quote! {              syrette::declare_interface!(                  syrette::castable_factory::threadsafe::ThreadsafeCastableFactory< -                    (), +                    (std::sync::Arc<syrette::async_di_container::AsyncDIContainer>,),                      #interface, -                > -> syrette::interfaces::factory::IFactory<(), #interface>, +                > -> syrette::interfaces::factory::IFactory< +                    (std::sync::Arc<syrette::async_di_container::AsyncDIContainer>,), +                    #interface +                >,                  async = true              );              syrette::declare_interface!(                  syrette::castable_factory::threadsafe::ThreadsafeCastableFactory< -                    (), +                    (std::sync::Arc<syrette::async_di_container::AsyncDIContainer>,),                      #interface, -                > -> syrette::interfaces::any_factory::AnyFactory, +                > -> syrette::interfaces::any_factory::AnyThreadsafeFactory,                  async = true              );          } | 
