aboutsummaryrefslogtreecommitdiff
path: root/src/di_container
diff options
context:
space:
mode:
Diffstat (limited to 'src/di_container')
-rw-r--r--src/di_container/asynchronous.rs (renamed from src/di_container/asynchronous/mod.rs)78
-rw-r--r--src/di_container/asynchronous/binding.rs (renamed from src/di_container/asynchronous/binding/mod.rs)0
-rw-r--r--src/di_container/asynchronous/binding/builder.rs94
-rw-r--r--src/di_container/blocking.rs (renamed from src/di_container/blocking/mod.rs)48
-rw-r--r--src/di_container/blocking/binding.rs (renamed from src/di_container/blocking/binding/mod.rs)0
-rw-r--r--src/di_container/blocking/binding/builder.rs53
-rw-r--r--src/di_container/mod.rs43
7 files changed, 127 insertions, 189 deletions
diff --git a/src/di_container/asynchronous/mod.rs b/src/di_container/asynchronous.rs
index c993b8b..6cb54f3 100644
--- a/src/di_container/asynchronous/mod.rs
+++ b/src/di_container/asynchronous.rs
@@ -51,15 +51,17 @@
//! ```
use std::any::type_name;
+use crate::castable_function::threadsafe::ThreadsafeCastableFunction;
use crate::di_container::asynchronous::binding::builder::AsyncBindingBuilder;
use crate::di_container::binding_storage::DIContainerBindingStorage;
use crate::di_container::BindingOptions;
use crate::errors::async_di_container::AsyncDIContainerError;
+use crate::future::BoxFuture;
use crate::private::cast::arc::CastArc;
use crate::private::cast::boxed::CastBox;
use crate::private::cast::error::CastError;
-use crate::provider::r#async::{AsyncProvidable, IAsyncProvider};
-use crate::ptr::SomePtr;
+use crate::provider::r#async::{AsyncProvidable, IAsyncProvider, ProvidableFunctionKind};
+use crate::ptr::{SomePtr, TransientPtr};
use crate::util::use_double;
use_double!(crate::dependency_history::DependencyHistory);
@@ -347,10 +349,8 @@ impl AsyncDIContainer
))
}
#[cfg(feature = "factory")]
- AsyncProvidable::Factory(factory_binding) => {
- use crate::castable_function::threadsafe::ThreadsafeCastableFunction;
-
- let factory = factory_binding
+ AsyncProvidable::Function(func_bound, ProvidableFunctionKind::UserCalled) => {
+ let factory = func_bound
.as_any()
.downcast_ref::<ThreadsafeCastableFunction<Interface, Self>>()
.ok_or_else(|| AsyncDIContainerError::CastFailed {
@@ -360,48 +360,42 @@ impl AsyncDIContainer
Ok(SomePtr::ThreadsafeFactory(factory.call(self).into()))
}
- #[cfg(feature = "factory")]
- AsyncProvidable::DefaultFactory(binding) => {
- use crate::castable_function::threadsafe::ThreadsafeCastableFunction;
- use crate::ptr::TransientPtr;
-
- type DefaultFactoryFn<Interface> = ThreadsafeCastableFunction<
+ AsyncProvidable::Function(func_bound, ProvidableFunctionKind::Instant) => {
+ type Func<Interface> = ThreadsafeCastableFunction<
dyn Fn() -> TransientPtr<Interface> + Send + Sync,
AsyncDIContainer,
>;
- let default_factory = binding
+ let dynamic_val_func = func_bound
.as_any()
- .downcast_ref::<DefaultFactoryFn<Interface>>()
+ .downcast_ref::<Func<Interface>>()
.ok_or_else(|| AsyncDIContainerError::CastFailed {
- interface: type_name::<DefaultFactoryFn<Interface>>(),
- binding_kind: "default factory",
+ interface: type_name::<Func<Interface>>(),
+ binding_kind: "dynamic value func",
})?;
- Ok(SomePtr::Transient(default_factory.call(self)()))
+ Ok(SomePtr::Transient(dynamic_val_func.call(self)()))
}
- #[cfg(feature = "factory")]
- AsyncProvidable::AsyncDefaultFactory(binding) => {
- use crate::castable_function::threadsafe::ThreadsafeCastableFunction;
- use crate::future::BoxFuture;
- use crate::ptr::TransientPtr;
-
- type AsyncDefaultFactoryFn<Interface> = ThreadsafeCastableFunction<
- dyn Fn<(), Output = BoxFuture<'static, TransientPtr<Interface>>>
- + Send
- + Sync,
+ AsyncProvidable::Function(
+ func_bound,
+ ProvidableFunctionKind::AsyncInstant,
+ ) => {
+ type Func<Interface> = ThreadsafeCastableFunction<
+ dyn Fn() -> BoxFuture<'static, TransientPtr<Interface>> + Send + Sync,
AsyncDIContainer,
>;
- let async_default_factory = binding
+ let async_dynamic_value_func = func_bound
.as_any()
- .downcast_ref::<AsyncDefaultFactoryFn<Interface>>()
+ .downcast_ref::<Func<Interface>>()
.ok_or_else(|| AsyncDIContainerError::CastFailed {
- interface: type_name::<AsyncDefaultFactoryFn<Interface>>(),
- binding_kind: "async default factory",
+ interface: type_name::<Func<Interface>>(),
+ binding_kind: "async dynamic value function",
})?;
- Ok(SomePtr::Transient(async_default_factory.call(self)().await))
+ Ok(SomePtr::Transient(
+ async_dynamic_value_func.call(self)().await,
+ ))
}
}
}
@@ -652,7 +646,10 @@ mod tests
}
}
+ use std::sync::Arc;
+
use crate::castable_function::threadsafe::ThreadsafeCastableFunction;
+ use crate::provider::r#async::ProvidableFunctionKind;
type IUserManagerFactory =
dyn Fn(Vec<i128>) -> TransientPtr<dyn IUserManager> + Send + Sync;
@@ -672,10 +669,9 @@ mod tests
};
inner_mock_provider.expect_provide().returning(|_, _| {
- Ok(AsyncProvidable::Factory(
- crate::ptr::ThreadsafeFactoryPtr::new(
- ThreadsafeCastableFunction::new(factory_func),
- ),
+ Ok(AsyncProvidable::Function(
+ Arc::new(ThreadsafeCastableFunction::new(factory_func)),
+ ProvidableFunctionKind::UserCalled,
))
});
@@ -734,7 +730,10 @@ mod tests
}
}
+ use std::sync::Arc;
+
use crate::castable_function::threadsafe::ThreadsafeCastableFunction;
+ use crate::provider::r#async::ProvidableFunctionKind;
type IUserManagerFactory =
dyn Fn(Vec<i128>) -> TransientPtr<dyn IUserManager> + Send + Sync;
@@ -754,10 +753,9 @@ mod tests
};
inner_mock_provider.expect_provide().returning(|_, _| {
- Ok(AsyncProvidable::Factory(
- crate::ptr::ThreadsafeFactoryPtr::new(
- ThreadsafeCastableFunction::new(factory_func),
- ),
+ Ok(AsyncProvidable::Function(
+ Arc::new(ThreadsafeCastableFunction::new(factory_func)),
+ ProvidableFunctionKind::UserCalled,
))
});
diff --git a/src/di_container/asynchronous/binding/mod.rs b/src/di_container/asynchronous/binding.rs
index 6a09bff..6a09bff 100644
--- a/src/di_container/asynchronous/binding/mod.rs
+++ b/src/di_container/asynchronous/binding.rs
diff --git a/src/di_container/asynchronous/binding/builder.rs b/src/di_container/asynchronous/binding/builder.rs
index 8465c9a..db1b576 100644
--- a/src/di_container/asynchronous/binding/builder.rs
+++ b/src/di_container/asynchronous/binding/builder.rs
@@ -1,13 +1,17 @@
//! Binding builder for types inside of a [`AsyncDIContainer`].
use std::any::type_name;
use std::marker::PhantomData;
+use std::sync::Arc;
+use crate::castable_function::threadsafe::ThreadsafeCastableFunction;
use crate::di_container::asynchronous::binding::scope_configurator::AsyncBindingScopeConfigurator;
-#[cfg(feature = "factory")]
use crate::di_container::asynchronous::binding::when_configurator::AsyncBindingWhenConfigurator;
use crate::di_container::BindingOptions;
use crate::errors::async_di_container::AsyncBindingBuilderError;
+use crate::future::BoxFuture;
use crate::interfaces::async_injectable::AsyncInjectable;
+use crate::provider::r#async::{AsyncFunctionProvider, ProvidableFunctionKind};
+use crate::ptr::TransientPtr;
use crate::util::use_double;
use_double!(crate::dependency_history::DependencyHistory);
@@ -173,8 +177,10 @@ where
Interface: Fn<Args, Output = Return> + Send + Sync,
FactoryFunc: Fn(&AsyncDIContainer) -> BoxFn<Args, Return> + Send + Sync,
{
+ use std::sync::Arc;
+
use crate::castable_function::threadsafe::ThreadsafeCastableFunction;
- use crate::provider::r#async::AsyncFactoryVariant;
+ use crate::provider::r#async::ProvidableFunctionKind;
if self
.di_container
@@ -190,9 +196,9 @@ where
self.di_container.set_binding::<Interface>(
BindingOptions::new(),
- Box::new(crate::provider::r#async::AsyncFactoryProvider::new(
- crate::ptr::ThreadsafeFactoryPtr::new(factory_impl),
- AsyncFactoryVariant::Normal,
+ Box::new(crate::provider::r#async::AsyncFunctionProvider::new(
+ Arc::new(factory_impl),
+ ProvidableFunctionKind::UserCalled,
)),
);
@@ -270,9 +276,6 @@ where
+ Send
+ Sync,
{
- use crate::castable_function::threadsafe::ThreadsafeCastableFunction;
- use crate::provider::r#async::AsyncFactoryVariant;
-
if self
.di_container
.has_binding::<Interface>(BindingOptions::new())
@@ -287,17 +290,17 @@ where
self.di_container.set_binding::<Interface>(
BindingOptions::new(),
- Box::new(crate::provider::r#async::AsyncFactoryProvider::new(
- crate::ptr::ThreadsafeFactoryPtr::new(factory_impl),
- AsyncFactoryVariant::Normal,
+ Box::new(AsyncFunctionProvider::new(
+ Arc::new(factory_impl),
+ ProvidableFunctionKind::UserCalled,
)),
);
Ok(AsyncBindingWhenConfigurator::new(self.di_container))
}
- /// Creates a binding of type `Interface` to a factory that takes no arguments
- /// inside of the associated [`AsyncDIContainer`].
+ /// Creates a binding of type `Interface` to a value resolved using the given
+ /// function.
///
/// # Errors
/// Will return Err if the associated [`AsyncDIContainer`] already have a binding
@@ -325,7 +328,7 @@ where
/// # {
/// # let mut di_container = AsyncDIContainer::new();
/// #
- /// di_container.bind::<dyn Foo>().to_default_factory(&|_| {
+ /// di_container.bind::<dyn Foo>().to_dynamic_value(&|_| {
/// Box::new(|| {
/// let bar = TransientPtr::new(Bar {
/// num: 42,
@@ -339,24 +342,20 @@ where
/// # Ok(())
/// # }
/// ```
- #[cfg(feature = "factory")]
- #[cfg_attr(doc_cfg, doc(cfg(feature = "factory")))]
- pub fn to_default_factory<Return, FactoryFunc>(
+ pub fn to_dynamic_value<Func>(
self,
- factory_func: &'static FactoryFunc,
+ func: &'static Func,
) -> Result<
AsyncBindingWhenConfigurator<'di_container, Interface>,
AsyncBindingBuilderError,
>
where
- Return: 'static + ?Sized,
- FactoryFunc: Fn(&AsyncDIContainer) -> BoxFn<(), crate::ptr::TransientPtr<Return>>
+ Func: Fn(
+ &AsyncDIContainer,
+ ) -> Box<dyn Fn() -> TransientPtr<Interface> + Send + Sync>
+ Send
+ Sync,
{
- use crate::castable_function::threadsafe::ThreadsafeCastableFunction;
- use crate::provider::r#async::AsyncFactoryVariant;
-
if self
.di_container
.has_binding::<Interface>(BindingOptions::new())
@@ -367,21 +366,21 @@ where
)));
}
- let factory_impl = ThreadsafeCastableFunction::new(factory_func);
+ let castable_func = ThreadsafeCastableFunction::new(func);
self.di_container.set_binding::<Interface>(
BindingOptions::new(),
- Box::new(crate::provider::r#async::AsyncFactoryProvider::new(
- crate::ptr::ThreadsafeFactoryPtr::new(factory_impl),
- AsyncFactoryVariant::Default,
+ Box::new(AsyncFunctionProvider::new(
+ Arc::new(castable_func),
+ ProvidableFunctionKind::Instant,
)),
);
Ok(AsyncBindingWhenConfigurator::new(self.di_container))
}
- /// Creates a binding of factory type `Interface` to a async factory inside of the
- /// associated [`AsyncDIContainer`].
+ /// Creates a binding of type `Interface` to a value resolved using the given
+ /// async function.
///
/// # Errors
/// Will return Err if the associated [`AsyncDIContainer`] already have a binding
@@ -412,7 +411,7 @@ where
/// #
/// di_container
/// .bind::<dyn Foo>()
- /// .to_async_default_factory(&|_| {
+ /// .to_async_dynamic_value(&|_| {
/// Box::new(|| {
/// Box::pin(async {
/// let bar = TransientPtr::new(Bar {
@@ -430,24 +429,21 @@ where
/// # Ok(())
/// # }
/// ```
- #[cfg(feature = "factory")]
- #[cfg_attr(doc_cfg, doc(cfg(feature = "factory")))]
- pub fn to_async_default_factory<Return, FactoryFunc>(
+ pub fn to_async_dynamic_value<Func>(
self,
- factory_func: &'static FactoryFunc,
+ func: &'static Func,
) -> Result<
AsyncBindingWhenConfigurator<'di_container, Interface>,
AsyncBindingBuilderError,
>
where
- Return: 'static + ?Sized,
- FactoryFunc: Fn(&AsyncDIContainer) -> BoxFn<(), crate::future::BoxFuture<'static, Return>>
- + Send
+ Func: Fn(
+ &AsyncDIContainer,
+ ) -> Box<
+ dyn Fn() -> BoxFuture<'static, TransientPtr<Interface>> + Send + Sync,
+ > + Send
+ Sync,
{
- use crate::castable_function::threadsafe::ThreadsafeCastableFunction;
- use crate::provider::r#async::AsyncFactoryVariant;
-
if self
.di_container
.has_binding::<Interface>(BindingOptions::new())
@@ -458,13 +454,13 @@ where
)));
}
- let factory_impl = ThreadsafeCastableFunction::new(factory_func);
+ let castable_func = ThreadsafeCastableFunction::new(func);
self.di_container.set_binding::<Interface>(
BindingOptions::new(),
- Box::new(crate::provider::r#async::AsyncFactoryProvider::new(
- crate::ptr::ThreadsafeFactoryPtr::new(factory_impl),
- AsyncFactoryVariant::AsyncDefault,
+ Box::new(AsyncFunctionProvider::new(
+ Arc::new(castable_func),
+ ProvidableFunctionKind::AsyncInstant,
)),
);
@@ -599,8 +595,7 @@ mod tests
}
#[tokio::test]
- #[cfg(feature = "factory")]
- async fn can_bind_to_default_factory()
+ async fn can_bind_to_dynamic_value()
{
use crate::ptr::TransientPtr;
@@ -625,7 +620,7 @@ mod tests
);
binding_builder
- .to_default_factory(&|_| {
+ .to_dynamic_value(&|_| {
Box::new(|| {
let user_manager: TransientPtr<dyn subjects_async::IUserManager> =
TransientPtr::new(subjects_async::UserManager::new());
@@ -637,8 +632,7 @@ mod tests
}
#[tokio::test]
- #[cfg(feature = "factory")]
- async fn can_bind_to_async_default_factory()
+ async fn can_bind_to_async_dynamic_value()
{
use crate::ptr::TransientPtr;
use crate::test_utils::async_closure;
@@ -664,7 +658,7 @@ mod tests
);
binding_builder
- .to_async_default_factory(&|_| {
+ .to_async_dynamic_value(&|_| {
async_closure!(|| {
let user_manager: TransientPtr<dyn subjects_async::IUserManager> =
TransientPtr::new(subjects_async::UserManager::new());
diff --git a/src/di_container/blocking/mod.rs b/src/di_container/blocking.rs
index d8b0d59..0c464df 100644
--- a/src/di_container/blocking/mod.rs
+++ b/src/di_container/blocking.rs
@@ -51,14 +51,15 @@
//! ```
use std::any::type_name;
+use crate::castable_function::CastableFunction;
use crate::di_container::binding_storage::DIContainerBindingStorage;
use crate::di_container::blocking::binding::builder::BindingBuilder;
use crate::di_container::BindingOptions;
use crate::errors::di_container::DIContainerError;
use crate::private::cast::boxed::CastBox;
use crate::private::cast::rc::CastRc;
-use crate::provider::blocking::{IProvider, Providable};
-use crate::ptr::SomePtr;
+use crate::provider::blocking::{IProvider, Providable, ProvidableFunctionKind};
+use crate::ptr::{SomePtr, TransientPtr};
use crate::util::use_double;
use_double!(crate::dependency_history::DependencyHistory);
@@ -284,10 +285,8 @@ impl DIContainer
})?,
)),
#[cfg(feature = "factory")]
- Providable::Factory(factory_binding) => {
- use crate::castable_function::CastableFunction;
-
- let factory = factory_binding
+ Providable::Function(func_bound, ProvidableFunctionKind::UserCalled) => {
+ let factory = func_bound
.as_any()
.downcast_ref::<CastableFunction<Interface, Self>>()
.ok_or_else(|| DIContainerError::CastFailed {
@@ -297,23 +296,19 @@ impl DIContainer
Ok(SomePtr::Factory(factory.call(self).into()))
}
- #[cfg(feature = "factory")]
- Providable::DefaultFactory(factory_binding) => {
- use crate::castable_function::CastableFunction;
- use crate::ptr::TransientPtr;
-
- type DefaultFactoryFn<Interface> =
+ Providable::Function(func_bound, ProvidableFunctionKind::Instant) => {
+ type Func<Interface> =
CastableFunction<dyn Fn() -> TransientPtr<Interface>, DIContainer>;
- let default_factory = factory_binding
+ let dynamic_val_func = func_bound
.as_any()
- .downcast_ref::<DefaultFactoryFn<Interface>>()
+ .downcast_ref::<Func<Interface>>()
.ok_or_else(|| DIContainerError::CastFailed {
interface: type_name::<Interface>(),
- binding_kind: "default factory",
+ binding_kind: "dynamic value function",
})?;
- Ok(SomePtr::Transient(default_factory.call(self)()))
+ Ok(SomePtr::Transient(dynamic_val_func.call(self)()))
}
}
}
@@ -517,7 +512,10 @@ mod tests
#[cfg(feature = "factory")]
fn can_get_factory()
{
+ use std::rc::Rc;
+
use crate::castable_function::CastableFunction;
+ use crate::provider::blocking::ProvidableFunctionKind;
use crate::ptr::FactoryPtr;
trait IUserManager
@@ -572,9 +570,10 @@ mod tests
let mut mock_provider = MockIProvider::new();
mock_provider.expect_provide().returning_st(|_, _| {
- Ok(Providable::Factory(FactoryPtr::new(CastableFunction::new(
- factory_func,
- ))))
+ Ok(Providable::Function(
+ Rc::new(CastableFunction::new(factory_func)),
+ ProvidableFunctionKind::UserCalled,
+ ))
});
di_container
@@ -592,8 +591,10 @@ mod tests
#[cfg(feature = "factory")]
fn can_get_factory_named()
{
+ use std::rc::Rc;
+
use crate::castable_function::CastableFunction;
- use crate::ptr::FactoryPtr;
+ use crate::provider::blocking::ProvidableFunctionKind;
trait IUserManager
{
@@ -647,9 +648,10 @@ mod tests
let mut mock_provider = MockIProvider::new();
mock_provider.expect_provide().returning_st(|_, _| {
- Ok(Providable::Factory(FactoryPtr::new(CastableFunction::new(
- factory_func,
- ))))
+ Ok(Providable::Function(
+ Rc::new(CastableFunction::new(factory_func)),
+ ProvidableFunctionKind::UserCalled,
+ ))
});
di_container.binding_storage.set::<IUserManagerFactory>(
diff --git a/src/di_container/blocking/binding/mod.rs b/src/di_container/blocking/binding.rs
index 6a09bff..6a09bff 100644
--- a/src/di_container/blocking/binding/mod.rs
+++ b/src/di_container/blocking/binding.rs
diff --git a/src/di_container/blocking/binding/builder.rs b/src/di_container/blocking/binding/builder.rs
index ead1a54..596a2aa 100644
--- a/src/di_container/blocking/binding/builder.rs
+++ b/src/di_container/blocking/binding/builder.rs
@@ -1,13 +1,16 @@
//! Binding builder for types inside of a [`DIContainer`].
use std::any::type_name;
use std::marker::PhantomData;
+use std::rc::Rc;
+use crate::castable_function::CastableFunction;
use crate::di_container::blocking::binding::scope_configurator::BindingScopeConfigurator;
-#[cfg(feature = "factory")]
use crate::di_container::blocking::binding::when_configurator::BindingWhenConfigurator;
use crate::di_container::BindingOptions;
use crate::errors::di_container::BindingBuilderError;
use crate::interfaces::injectable::Injectable;
+use crate::provider::blocking::{FunctionProvider, ProvidableFunctionKind};
+use crate::ptr::TransientPtr;
use crate::util::use_double;
use_double!(crate::dependency_history::DependencyHistory);
@@ -181,8 +184,6 @@ where
Interface: Fn<Args, Output = crate::ptr::TransientPtr<Return>>,
Func: Fn(&DIContainer) -> Box<Interface>,
{
- use crate::castable_function::CastableFunction;
-
if self
.di_container
.has_binding::<Interface>(BindingOptions::new())
@@ -196,17 +197,17 @@ where
self.di_container.set_binding::<Interface>(
BindingOptions::new(),
- Box::new(crate::provider::blocking::FactoryProvider::new(
- crate::ptr::FactoryPtr::new(factory_impl),
- false,
+ Box::new(FunctionProvider::new(
+ Rc::new(factory_impl),
+ ProvidableFunctionKind::UserCalled,
)),
);
Ok(BindingWhenConfigurator::new(self.di_container))
}
- /// Creates a binding of type `Interface` to a factory that takes no arguments
- /// inside of the associated [`DIContainer`].
+ /// Creates a binding of type `Interface` to a value resolved using the given
+ /// function.
///
/// # Errors
/// Will return Err if the associated [`DIContainer`] already have a binding for
@@ -244,33 +245,20 @@ where
/// # {
/// # let mut di_container = DIContainer::new();
/// #
- /// di_container.bind::<dyn IBuffer>().to_default_factory(&|_| {
- /// Box::new(|| {
- /// let buffer = TransientPtr::new(Buffer::<BUFFER_SIZE>::new());
- ///
- /// buffer as TransientPtr<dyn IBuffer>
- /// })
+ /// di_container.bind::<dyn IBuffer>().to_dynamic_value(&|_| {
+ /// Box::new(|| TransientPtr::new(Buffer::<BUFFER_SIZE>::new()))
/// });
/// #
/// # Ok(())
/// # }
/// ```
- #[cfg(feature = "factory")]
- #[cfg_attr(doc_cfg, doc(cfg(feature = "factory")))]
- pub fn to_default_factory<Return, FactoryFunc>(
+ pub fn to_dynamic_value<Func>(
self,
- factory_func: &'static FactoryFunc,
+ func: &'static Func,
) -> Result<BindingWhenConfigurator<'di_container, Interface>, BindingBuilderError>
where
- Return: 'static + ?Sized,
- FactoryFunc: Fn(
- &DIContainer,
- ) -> crate::ptr::TransientPtr<
- dyn Fn<(), Output = crate::ptr::TransientPtr<Return>>,
- >,
+ Func: Fn(&DIContainer) -> TransientPtr<dyn Fn() -> TransientPtr<Interface>>,
{
- use crate::castable_function::CastableFunction;
-
if self
.di_container
.has_binding::<Interface>(BindingOptions::new())
@@ -280,13 +268,13 @@ where
>()));
}
- let factory_impl = CastableFunction::new(factory_func);
+ let castable_func = CastableFunction::new(func);
self.di_container.set_binding::<Interface>(
BindingOptions::new(),
- Box::new(crate::provider::blocking::FactoryProvider::new(
- crate::ptr::FactoryPtr::new(factory_impl),
- true,
+ Box::new(FunctionProvider::new(
+ Rc::new(castable_func),
+ ProvidableFunctionKind::Instant,
)),
);
@@ -370,8 +358,7 @@ mod tests
}
#[test]
- #[cfg(feature = "factory")]
- fn can_bind_to_default_factory()
+ fn can_bind_to_dynamic_value()
{
use crate::ptr::TransientPtr;
@@ -395,7 +382,7 @@ mod tests
);
binding_builder
- .to_default_factory(&|_| {
+ .to_dynamic_value(&|_| {
Box::new(move || {
let user_manager: TransientPtr<dyn subjects::IUserManager> =
TransientPtr::new(subjects::UserManager::new());
diff --git a/src/di_container/mod.rs b/src/di_container/mod.rs
deleted file mode 100644
index 4e60505..0000000
--- a/src/di_container/mod.rs
+++ /dev/null
@@ -1,43 +0,0 @@
-//! Dependency injection container types.
-
-#[cfg(feature = "async")]
-#[cfg_attr(doc_cfg, doc(cfg(feature = "async")))]
-pub mod asynchronous;
-
-pub mod blocking;
-
-/// DI container binding options.
-///
-/// # Examples
-/// ```
-/// # use syrette::di_container::BindingOptions;
-/// #
-/// BindingOptions::new().name("foo");
-/// ```
-#[derive(Debug, Default, Clone, PartialEq, Eq, Hash)]
-pub struct BindingOptions<'a>
-{
- name: Option<&'a str>,
-}
-
-impl<'a> BindingOptions<'a>
-{
- /// Returns a new `BindingOptions`.
- #[must_use]
- pub const fn new() -> Self
- {
- Self { name: None }
- }
-
- /// Returns `Self` with the specified name set.
- #[must_use]
- pub const fn name(mut self, name: &'a str) -> Self
- {
- self.name = Some(name);
-
- self
- }
-}
-
-// Private.
-pub(crate) mod binding_storage;