diff options
Diffstat (limited to 'src/di_container/blocking/binding')
| -rw-r--r-- | src/di_container/blocking/binding/builder.rs | 44 | ||||
| -rw-r--r-- | src/di_container/blocking/binding/scope_configurator.rs | 13 | ||||
| -rw-r--r-- | src/di_container/blocking/binding/when_configurator.rs | 9 | 
3 files changed, 40 insertions, 26 deletions
diff --git a/src/di_container/blocking/binding/builder.rs b/src/di_container/blocking/binding/builder.rs index 0c323ec..577f034 100644 --- a/src/di_container/blocking/binding/builder.rs +++ b/src/di_container/blocking/binding/builder.rs @@ -9,6 +9,7 @@ use crate::di_container::blocking::binding::scope_configurator::BindingScopeConf  #[cfg(feature = "factory")]  use crate::di_container::blocking::binding::when_configurator::BindingWhenConfigurator;  use crate::di_container::blocking::IDIContainer; +use crate::di_container::BindingOptions;  use crate::errors::di_container::BindingBuilderError;  use crate::interfaces::injectable::Injectable;  use crate::util::use_double; @@ -99,7 +100,10 @@ where          Implementation: Injectable<DIContainerType>,      {          { -            if self.di_container.has_binding::<Interface>(None) { +            if self +                .di_container +                .has_binding::<Interface>(BindingOptions::new()) +            {                  return Err(BindingBuilderError::BindingAlreadyExists(type_name::<                      Interface,                  >( @@ -197,7 +201,10 @@ where      {          use crate::private::castable_factory::blocking::CastableFactory; -        if self.di_container.has_binding::<Interface>(None) { +        if self +            .di_container +            .has_binding::<Interface>(BindingOptions::new()) +        {              return Err(BindingBuilderError::BindingAlreadyExists(type_name::<                  Interface,              >())); @@ -206,7 +213,7 @@ where          let factory_impl = CastableFactory::new(factory_func);          self.di_container.set_binding::<Interface>( -            None, +            BindingOptions::new(),              Box::new(crate::provider::blocking::FactoryProvider::new(                  crate::ptr::FactoryPtr::new(factory_impl),                  false, @@ -286,7 +293,10 @@ where      {          use crate::private::castable_factory::blocking::CastableFactory; -        if self.di_container.has_binding::<Interface>(None) { +        if self +            .di_container +            .has_binding::<Interface>(BindingOptions::new()) +        {              return Err(BindingBuilderError::BindingAlreadyExists(type_name::<                  Interface,              >())); @@ -295,7 +305,7 @@ where          let factory_impl = CastableFactory::new(factory_func);          self.di_container.set_binding::<Interface>( -            None, +            BindingOptions::new(),              Box::new(crate::provider::blocking::FactoryProvider::new(                  crate::ptr::FactoryPtr::new(factory_impl),                  true, @@ -324,14 +334,14 @@ mod tests          mock_di_container              .expect_has_binding::<dyn subjects::INumber>() -            .with(eq(None)) -            .return_once(|_name| false) +            .with(eq(BindingOptions::new())) +            .return_once(|_options| false)              .once();          mock_di_container              .expect_set_binding::<dyn subjects::INumber>() -            .withf(|name, _provider| name.is_none()) -            .return_once(|_name, _provider| ()) +            .withf(|options, _provider| options.name.is_none()) +            .return_once(|_options, _provider| ())              .once();          let binding_builder = @@ -361,14 +371,14 @@ mod tests          mock_di_container              .expect_has_binding::<IUserManagerFactory>() -            .with(eq(None)) -            .return_once(|_name| false) +            .with(eq(BindingOptions::new())) +            .return_once(|_| false)              .once();          mock_di_container              .expect_set_binding::<IUserManagerFactory>() -            .withf(|name, _provider| name.is_none()) -            .return_once(|_name, _provider| ()) +            .withf(|options, _provider| options.name.is_none()) +            .return_once(|_, _provider| ())              .once();          let binding_builder = @@ -404,14 +414,14 @@ mod tests          mock_di_container              .expect_has_binding::<dyn subjects::IUserManager>() -            .with(eq(None)) -            .return_once(|_name| false) +            .with(eq(BindingOptions::new())) +            .return_once(|_| false)              .once();          mock_di_container              .expect_set_binding::<dyn subjects::IUserManager>() -            .withf(|name, _provider| name.is_none()) -            .return_once(|_name, _provider| ()) +            .withf(|options, _provider| options.name.is_none()) +            .return_once(|_, _provider| ())              .once();          let binding_builder = diff --git a/src/di_container/blocking/binding/scope_configurator.rs b/src/di_container/blocking/binding/scope_configurator.rs index 0aefa93..0fcdfdf 100644 --- a/src/di_container/blocking/binding/scope_configurator.rs +++ b/src/di_container/blocking/binding/scope_configurator.rs @@ -6,6 +6,7 @@ use std::rc::Rc;  use crate::di_container::blocking::binding::when_configurator::BindingWhenConfigurator;  use crate::di_container::blocking::IDIContainer; +use crate::di_container::BindingOptions;  use crate::errors::di_container::BindingScopeConfiguratorError;  use crate::interfaces::injectable::Injectable;  use crate::provider::blocking::{SingletonProvider, TransientTypeProvider}; @@ -81,8 +82,10 @@ where              .map_err(BindingScopeConfiguratorError::SingletonResolveFailed)?,          ); -        self.di_container -            .set_binding::<Interface>(None, Box::new(SingletonProvider::new(singleton))); +        self.di_container.set_binding::<Interface>( +            BindingOptions::new(), +            Box::new(SingletonProvider::new(singleton)), +        );          Ok(BindingWhenConfigurator::new(self.di_container))      } @@ -90,7 +93,7 @@ where      pub(crate) fn set_in_transient_scope(&self)      {          self.di_container.set_binding::<Interface>( -            None, +            BindingOptions::new(),              Box::new(TransientTypeProvider::<Implementation, DIContainerType>::new()),          );      } @@ -110,7 +113,7 @@ mod tests          di_container_mock              .expect_set_binding::<dyn subjects::IUserManager>() -            .withf(|name, _provider| name.is_none()) +            .withf(|options, _provider| options.name.is_none())              .return_once(|_name, _provider| ())              .once(); @@ -131,7 +134,7 @@ mod tests          di_container_mock              .expect_set_binding::<dyn subjects::IUserManager>() -            .withf(|name, _provider| name.is_none()) +            .withf(|options, _provider| options.name.is_none())              .return_once(|_name, _provider| ())              .once(); diff --git a/src/di_container/blocking/binding/when_configurator.rs b/src/di_container/blocking/binding/when_configurator.rs index fcef377..52b23ff 100644 --- a/src/di_container/blocking/binding/when_configurator.rs +++ b/src/di_container/blocking/binding/when_configurator.rs @@ -6,6 +6,7 @@ use std::marker::PhantomData;  use std::rc::Rc;  use crate::di_container::blocking::IDIContainer; +use crate::di_container::BindingOptions;  use crate::errors::di_container::BindingWhenConfiguratorError;  /// When configurator for a binding for type `Interface` inside a [`IDIContainer`]. @@ -45,7 +46,7 @@ where      {          let binding = self              .di_container -            .remove_binding::<Interface>(None) +            .remove_binding::<Interface>(BindingOptions::new())              .map_or_else(                  || {                      Err(BindingWhenConfiguratorError::BindingNotFound(type_name::< @@ -57,7 +58,7 @@ where              )?;          self.di_container -            .set_binding::<Interface>(Some(name), binding); +            .set_binding::<Interface>(BindingOptions::new().name(name), binding);          Ok(())      } @@ -79,13 +80,13 @@ mod tests          di_container_mock              .expect_remove_binding::<dyn subjects::INumber>() -            .with(eq(None)) +            .with(eq(BindingOptions::new()))              .return_once(|_name| Some(Box::new(MockIProvider::new())))              .once();          di_container_mock              .expect_set_binding::<dyn subjects::INumber>() -            .withf(|name, _provider| name == &Some("cool")) +            .withf(|options, _provider| options.name == Some("cool"))              .return_once(|_name, _provider| ())              .once();  | 
