aboutsummaryrefslogtreecommitdiff
path: root/src/di_container/asynchronous/binding
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2023-08-31 19:19:06 +0200
committerHampusM <hampus@hampusmat.com>2023-08-31 19:19:06 +0200
commit7bed48c852a741df5a14359916faf21d90d39814 (patch)
tree5cc94835225d356ed658cf78a99deeb1b4e730f8 /src/di_container/asynchronous/binding
parent0b4232d343e2214ead8fa62583bff2e948173ddf (diff)
refactor: pass around BindingOptions instead of name
Diffstat (limited to 'src/di_container/asynchronous/binding')
-rw-r--r--src/di_container/asynchronous/binding/builder.rs59
-rw-r--r--src/di_container/asynchronous/binding/scope_configurator.rs9
-rw-r--r--src/di_container/asynchronous/binding/when_configurator.rs9
3 files changed, 50 insertions, 27 deletions
diff --git a/src/di_container/asynchronous/binding/builder.rs b/src/di_container/asynchronous/binding/builder.rs
index 5862d63..83a1efb 100644
--- a/src/di_container/asynchronous/binding/builder.rs
+++ b/src/di_container/asynchronous/binding/builder.rs
@@ -9,6 +9,7 @@ use crate::di_container::asynchronous::binding::scope_configurator::AsyncBinding
#[cfg(feature = "factory")]
use crate::di_container::asynchronous::binding::when_configurator::AsyncBindingWhenConfigurator;
use crate::di_container::asynchronous::IAsyncDIContainer;
+use crate::di_container::BindingOptions;
use crate::errors::async_di_container::AsyncBindingBuilderError;
use crate::interfaces::async_injectable::AsyncInjectable;
use crate::util::use_double;
@@ -104,7 +105,11 @@ where
where
Implementation: AsyncInjectable<DIContainerType>,
{
- if self.di_container.has_binding::<Interface>(None).await {
+ if self
+ .di_container
+ .has_binding::<Interface>(BindingOptions::new())
+ .await
+ {
return Err(AsyncBindingBuilderError::BindingAlreadyExists(type_name::<
Interface,
>(
@@ -189,7 +194,11 @@ where
use crate::private::castable_factory::threadsafe::ThreadsafeCastableFactory;
use crate::provider::r#async::AsyncFactoryVariant;
- if self.di_container.has_binding::<Interface>(None).await {
+ if self
+ .di_container
+ .has_binding::<Interface>(BindingOptions::new())
+ .await
+ {
return Err(AsyncBindingBuilderError::BindingAlreadyExists(type_name::<
Interface,
>(
@@ -200,7 +209,7 @@ where
self.di_container
.set_binding::<Interface>(
- None,
+ BindingOptions::new(),
Box::new(crate::provider::r#async::AsyncFactoryProvider::new(
crate::ptr::ThreadsafeFactoryPtr::new(factory_impl),
AsyncFactoryVariant::Normal,
@@ -292,7 +301,11 @@ where
use crate::private::castable_factory::threadsafe::ThreadsafeCastableFactory;
use crate::provider::r#async::AsyncFactoryVariant;
- if self.di_container.has_binding::<Interface>(None).await {
+ if self
+ .di_container
+ .has_binding::<Interface>(BindingOptions::new())
+ .await
+ {
return Err(AsyncBindingBuilderError::BindingAlreadyExists(type_name::<
Interface,
>(
@@ -303,7 +316,7 @@ where
self.di_container
.set_binding::<Interface>(
- None,
+ BindingOptions::new(),
Box::new(crate::provider::r#async::AsyncFactoryProvider::new(
crate::ptr::ThreadsafeFactoryPtr::new(factory_impl),
AsyncFactoryVariant::Normal,
@@ -382,7 +395,11 @@ where
use crate::private::castable_factory::threadsafe::ThreadsafeCastableFactory;
use crate::provider::r#async::AsyncFactoryVariant;
- if self.di_container.has_binding::<Interface>(None).await {
+ if self
+ .di_container
+ .has_binding::<Interface>(BindingOptions::new())
+ .await
+ {
return Err(AsyncBindingBuilderError::BindingAlreadyExists(type_name::<
Interface,
>(
@@ -393,7 +410,7 @@ where
self.di_container
.set_binding::<Interface>(
- None,
+ BindingOptions::new(),
Box::new(crate::provider::r#async::AsyncFactoryProvider::new(
crate::ptr::ThreadsafeFactoryPtr::new(factory_impl),
AsyncFactoryVariant::Default,
@@ -477,7 +494,11 @@ where
use crate::private::castable_factory::threadsafe::ThreadsafeCastableFactory;
use crate::provider::r#async::AsyncFactoryVariant;
- if self.di_container.has_binding::<Interface>(None).await {
+ if self
+ .di_container
+ .has_binding::<Interface>(BindingOptions::new())
+ .await
+ {
return Err(AsyncBindingBuilderError::BindingAlreadyExists(type_name::<
Interface,
>(
@@ -488,7 +509,7 @@ where
self.di_container
.set_binding::<Interface>(
- None,
+ BindingOptions::new(),
Box::new(crate::provider::r#async::AsyncFactoryProvider::new(
crate::ptr::ThreadsafeFactoryPtr::new(factory_impl),
AsyncFactoryVariant::AsyncDefault,
@@ -519,13 +540,13 @@ mod tests
di_container_mock
.expect_has_binding::<dyn subjects_async::IUserManager>()
- .with(eq(None))
+ .with(eq(BindingOptions::new()))
.return_once(|_name| false)
.once();
di_container_mock
.expect_set_binding::<dyn subjects_async::IUserManager>()
- .withf(|name, _provider| name.is_none())
+ .withf(|binding_options, _provider| binding_options.name.is_none())
.return_once(|_name, _provider| ())
.once();
@@ -562,13 +583,13 @@ mod tests
di_container_mock
.expect_has_binding::<IUserManagerFactory>()
- .with(eq(None))
+ .with(eq(BindingOptions::new()))
.return_once(|_name| false)
.once();
di_container_mock
.expect_set_binding::<IUserManagerFactory>()
- .withf(|name, _provider| name.is_none())
+ .withf(|binding_options, _provider| binding_options.name.is_none())
.return_once(|_name, _provider| ())
.once();
@@ -613,13 +634,13 @@ mod tests
di_container_mock
.expect_has_binding::<IUserManagerFactory>()
- .with(eq(None))
+ .with(eq(BindingOptions::new()))
.return_once(|_name| false)
.once();
di_container_mock
.expect_set_binding::<IUserManagerFactory>()
- .withf(|name, _provider| name.is_none())
+ .withf(|binding_options, _provider| binding_options.name.is_none())
.return_once(|_name, _provider| ())
.once();
@@ -659,13 +680,13 @@ mod tests
di_container_mock
.expect_has_binding::<dyn subjects_async::IUserManager>()
- .with(eq(None))
+ .with(eq(BindingOptions::new()))
.return_once(|_name| false)
.once();
di_container_mock
.expect_set_binding::<dyn subjects_async::IUserManager>()
- .withf(|name, _provider| name.is_none())
+ .withf(|binding_options, _provider| binding_options.name.is_none())
.return_once(|_name, _provider| ())
.once();
@@ -706,13 +727,13 @@ mod tests
di_container_mock
.expect_has_binding::<dyn subjects_async::IUserManager>()
- .with(eq(None))
+ .with(eq(BindingOptions::new()))
.return_once(|_name| false)
.once();
di_container_mock
.expect_set_binding::<dyn subjects_async::IUserManager>()
- .withf(|name, _provider| name.is_none())
+ .withf(|binding_options, _provider| binding_options.name.is_none())
.return_once(|_name, _provider| ())
.once();
diff --git a/src/di_container/asynchronous/binding/scope_configurator.rs b/src/di_container/asynchronous/binding/scope_configurator.rs
index 0b5bad8..f10bb48 100644
--- a/src/di_container/asynchronous/binding/scope_configurator.rs
+++ b/src/di_container/asynchronous/binding/scope_configurator.rs
@@ -6,6 +6,7 @@ use std::sync::Arc;
use crate::di_container::asynchronous::binding::when_configurator::AsyncBindingWhenConfigurator;
use crate::di_container::asynchronous::IAsyncDIContainer;
+use crate::di_container::BindingOptions;
use crate::errors::async_di_container::AsyncBindingScopeConfiguratorError;
use crate::interfaces::async_injectable::AsyncInjectable;
use crate::provider::r#async::{AsyncSingletonProvider, AsyncTransientTypeProvider};
@@ -85,7 +86,7 @@ where
self.di_container
.set_binding::<Interface>(
- None,
+ BindingOptions::new(),
Box::new(AsyncSingletonProvider::new(singleton)),
)
.await;
@@ -97,7 +98,7 @@ where
{
self.di_container
.set_binding::<Interface>(
- None,
+ BindingOptions::new(),
Box::new(
AsyncTransientTypeProvider::<Implementation, DIContainerType>::new(),
),
@@ -121,7 +122,7 @@ mod tests
di_container_mock
.expect_set_binding::<dyn subjects_async::IUserManager>()
- .withf(|name, _provider| name.is_none())
+ .withf(|binding_options, _provider| binding_options.name.is_none())
.return_once(|_name, _provider| ())
.once();
@@ -143,7 +144,7 @@ mod tests
di_container_mock
.expect_set_binding::<dyn subjects_async::IUserManager>()
- .withf(|name, _provider| name.is_none())
+ .withf(|binding_options, _provider| binding_options.name.is_none())
.return_once(|_name, _provider| ())
.once();
diff --git a/src/di_container/asynchronous/binding/when_configurator.rs b/src/di_container/asynchronous/binding/when_configurator.rs
index d08239e..4521178 100644
--- a/src/di_container/asynchronous/binding/when_configurator.rs
+++ b/src/di_container/asynchronous/binding/when_configurator.rs
@@ -6,6 +6,7 @@ use std::marker::PhantomData;
use std::sync::Arc;
use crate::di_container::asynchronous::IAsyncDIContainer;
+use crate::di_container::BindingOptions;
use crate::errors::async_di_container::AsyncBindingWhenConfiguratorError;
/// When configurator for a binding for type `Interface` inside a [`IAsyncDIContainer`].
@@ -45,7 +46,7 @@ where
{
let binding = self
.di_container
- .remove_binding::<Interface>(None)
+ .remove_binding::<Interface>(BindingOptions::new())
.await
.map_or_else(
|| {
@@ -57,7 +58,7 @@ where
)?;
self.di_container
- .set_binding::<Interface>(Some(name), binding)
+ .set_binding::<Interface>(BindingOptions::new().name(name), binding)
.await;
Ok(())
@@ -81,13 +82,13 @@ mod tests
di_container_mock
.expect_remove_binding::<dyn subjects_async::INumber>()
- .with(eq(None))
+ .with(eq(BindingOptions::new()))
.return_once(|_name| Some(Box::new(MockIAsyncProvider::new())))
.once();
di_container_mock
.expect_set_binding::<dyn subjects_async::INumber>()
- .withf(|name, _provider| name == &Some("awesome"))
+ .withf(|binding_options, _provider| binding_options.name == Some("awesome"))
.return_once(|_name, _provider| ())
.once();