diff options
Diffstat (limited to 'src/di_container/asynchronous/binding')
3 files changed, 25 insertions, 19 deletions
| diff --git a/src/di_container/asynchronous/binding/builder.rs b/src/di_container/asynchronous/binding/builder.rs index 8ba5be3..b2d2b55 100644 --- a/src/di_container/asynchronous/binding/builder.rs +++ b/src/di_container/asynchronous/binding/builder.rs @@ -21,6 +21,7 @@ pub type BoxFn<Args, Return> = Box<(dyn Fn<Args, Output = Return> + Send + Sync)  /// Binding builder for type `Interface` inside a [`IAsyncDIContainer`].  ///  /// [`IAsyncDIContainer`]: crate::di_container::asynchronous::IAsyncDIContainer +#[must_use = "No binding will be created if you don't use the binding builder"]  pub struct AsyncBindingBuilder<Interface, DIContainerType, DependencyHistoryType>  where      Interface: 'static + ?Sized + Send + Sync, @@ -96,7 +97,7 @@ where      ///      /// [`IAsyncDIContainer`]: crate::di_container::asynchronous::IAsyncDIContainer      pub async fn to<Implementation>( -        &self, +        self,      ) -> Result<          AsyncBindingScopeConfigurator<              Interface, @@ -121,7 +122,7 @@ where              self.dependency_history_factory,          ); -        binding_scope_configurator.in_transient_scope().await; +        binding_scope_configurator.set_in_transient_scope().await;          Ok(binding_scope_configurator)      } @@ -178,7 +179,7 @@ where      #[cfg(feature = "factory")]      #[cfg_attr(doc_cfg, doc(cfg(feature = "factory")))]      pub async fn to_factory<Args, Return, FactoryFunc>( -        &self, +        self,          factory_func: &'static FactoryFunc,      ) -> Result<          AsyncBindingWhenConfigurator<Interface, DIContainerType, DependencyHistoryType>, @@ -271,7 +272,7 @@ where      #[cfg(feature = "factory")]      #[cfg_attr(doc_cfg, doc(cfg(feature = "factory")))]      pub async fn to_async_factory<Args, Return, FactoryFunc>( -        &self, +        self,          factory_func: &'static FactoryFunc,      ) -> Result<          AsyncBindingWhenConfigurator<Interface, DIContainerType, DependencyHistoryType>, @@ -364,7 +365,7 @@ where      #[cfg(feature = "factory")]      #[cfg_attr(doc_cfg, doc(cfg(feature = "factory")))]      pub async fn to_default_factory<Return, FactoryFunc>( -        &self, +        self,          factory_func: &'static FactoryFunc,      ) -> Result<          AsyncBindingWhenConfigurator<Interface, DIContainerType, DependencyHistoryType>, @@ -458,7 +459,7 @@ where      #[cfg(feature = "factory")]      #[cfg_attr(doc_cfg, doc(cfg(feature = "factory")))]      pub async fn to_async_default_factory<Return, FactoryFunc>( -        &self, +        self,          factory_func: &'static FactoryFunc,      ) -> Result<          AsyncBindingWhenConfigurator<Interface, DIContainerType, DependencyHistoryType>, diff --git a/src/di_container/asynchronous/binding/scope_configurator.rs b/src/di_container/asynchronous/binding/scope_configurator.rs index b5923ec..2271a16 100644 --- a/src/di_container/asynchronous/binding/scope_configurator.rs +++ b/src/di_container/asynchronous/binding/scope_configurator.rs @@ -63,19 +63,10 @@ where      ///      /// This is the default.      pub async fn in_transient_scope( -        &self, +        self,      ) -> AsyncBindingWhenConfigurator<Interface, DIContainerType, DependencyHistoryType>      { -        self.di_container -            .set_binding::<Interface>( -                None, -                Box::new(AsyncTransientTypeProvider::< -                    Implementation, -                    DIContainerType, -                    DependencyHistoryType, -                >::new()), -            ) -            .await; +        self.set_in_transient_scope().await;          AsyncBindingWhenConfigurator::new(self.di_container.clone())      } @@ -85,7 +76,7 @@ where      /// # Errors      /// Will return Err if resolving the implementation fails.      pub async fn in_singleton_scope( -        &self, +        self,      ) -> Result<          AsyncBindingWhenConfigurator<Interface, DIContainerType, DependencyHistoryType>,          AsyncBindingScopeConfiguratorError, @@ -110,6 +101,20 @@ where          Ok(AsyncBindingWhenConfigurator::new(self.di_container.clone()))      } + +    pub(crate) async fn set_in_transient_scope(&self) +    { +        self.di_container +            .set_binding::<Interface>( +                None, +                Box::new(AsyncTransientTypeProvider::< +                    Implementation, +                    DIContainerType, +                    DependencyHistoryType, +                >::new()), +            ) +            .await; +    }  }  #[cfg(test)] diff --git a/src/di_container/asynchronous/binding/when_configurator.rs b/src/di_container/asynchronous/binding/when_configurator.rs index 4d56347..fb14bd4 100644 --- a/src/di_container/asynchronous/binding/when_configurator.rs +++ b/src/di_container/asynchronous/binding/when_configurator.rs @@ -45,7 +45,7 @@ where      /// # Errors      /// Will return Err if no binding for the interface already exists.      pub async fn when_named( -        &self, +        self,          name: &'static str,      ) -> Result<(), AsyncBindingWhenConfiguratorError>      { | 
