diff options
Diffstat (limited to 'src/private')
| -rw-r--r-- | src/private/any_factory.rs | 11 | ||||
| -rw-r--r-- | src/private/castable_factory/mod.rs | 91 | ||||
| -rw-r--r-- | src/private/castable_factory/threadsafe.rs | 103 | ||||
| -rw-r--r-- | src/private/factory.rs | 20 | ||||
| -rw-r--r-- | src/private/mod.rs | 9 | 
5 files changed, 0 insertions, 234 deletions
diff --git a/src/private/any_factory.rs b/src/private/any_factory.rs deleted file mode 100644 index 64af57e..0000000 --- a/src/private/any_factory.rs +++ /dev/null @@ -1,11 +0,0 @@ -//! Interface for any factory to ever exist. - -use std::fmt::Debug; - -use crate::private::cast::{CastFrom, CastFromArc}; - -/// Interface for any factory to ever exist. -pub trait AnyFactory: CastFrom + Debug {} - -/// Interface for any threadsafe factory to ever exist. -pub trait AnyThreadsafeFactory: CastFromArc + Debug {} diff --git a/src/private/castable_factory/mod.rs b/src/private/castable_factory/mod.rs deleted file mode 100644 index 2ac5918..0000000 --- a/src/private/castable_factory/mod.rs +++ /dev/null @@ -1,91 +0,0 @@ -use std::any::type_name; -use std::fmt::Debug; - -use crate::private::any_factory::AnyFactory; -use crate::private::factory::IFactory; -use crate::ptr::TransientPtr; - -#[cfg(feature = "async")] -pub mod threadsafe; - -pub struct CastableFactory<ReturnInterface, DIContainerT> -where -    ReturnInterface: 'static + ?Sized, -    DIContainerT: 'static, -{ -    func: &'static dyn Fn(&DIContainerT) -> TransientPtr<ReturnInterface>, -} - -impl<ReturnInterface, DIContainerT> CastableFactory<ReturnInterface, DIContainerT> -where -    ReturnInterface: 'static + ?Sized, -{ -    pub fn new( -        func: &'static dyn Fn(&DIContainerT) -> TransientPtr<ReturnInterface>, -    ) -> Self -    { -        Self { func } -    } -} - -impl<ReturnInterface, DIContainerT> IFactory<ReturnInterface, DIContainerT> -    for CastableFactory<ReturnInterface, DIContainerT> -where -    ReturnInterface: 'static + ?Sized, -{ -    fn call(&self, di_container: &DIContainerT) -> TransientPtr<ReturnInterface> -    { -        (self.func)(di_container) -    } -} - -impl<ReturnInterface, DIContainerT> AnyFactory -    for CastableFactory<ReturnInterface, DIContainerT> -where -    ReturnInterface: 'static + ?Sized, -    DIContainerT: 'static, -{ -} - -impl<ReturnInterface, DIContainerT> Debug -    for CastableFactory<ReturnInterface, DIContainerT> -where -    ReturnInterface: 'static + ?Sized, -{ -    #[cfg(not(tarpaulin_include))] -    fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result -    { -        let ret = type_name::<TransientPtr<ReturnInterface>>(); - -        formatter.write_fmt(format_args!( -            "CastableFactory (&DIContainer) -> {ret} {{ ... }}" -        )) -    } -} - -#[cfg(test)] -mod tests -{ -    use super::*; -    use crate::di_container::blocking::MockDIContainer; - -    #[derive(Debug, PartialEq, Eq)] -    struct Bacon -    { -        heal_amount: u32, -    } - -    #[test] -    fn can_call() -    { -        let castable_factory = CastableFactory::new(&|_: &MockDIContainer| { -            TransientPtr::new(Bacon { heal_amount: 27 }) -        }); - -        let mock_di_container = MockDIContainer::new(); - -        let output = castable_factory.call(&mock_di_container); - -        assert_eq!(output, TransientPtr::new(Bacon { heal_amount: 27 })); -    } -} diff --git a/src/private/castable_factory/threadsafe.rs b/src/private/castable_factory/threadsafe.rs deleted file mode 100644 index 6e8da42..0000000 --- a/src/private/castable_factory/threadsafe.rs +++ /dev/null @@ -1,103 +0,0 @@ -use std::any::type_name; -use std::fmt::Debug; - -use crate::private::any_factory::{AnyFactory, AnyThreadsafeFactory}; -use crate::private::factory::IThreadsafeFactory; -use crate::ptr::TransientPtr; - -pub struct ThreadsafeCastableFactory<ReturnInterface, DIContainerT> -where -    DIContainerT: 'static, -    ReturnInterface: 'static + ?Sized, -{ -    func: &'static (dyn Fn(&DIContainerT) -> TransientPtr<ReturnInterface> + Send + Sync), -} - -impl<ReturnInterface, DIContainerT> -    ThreadsafeCastableFactory<ReturnInterface, DIContainerT> -where -    DIContainerT: 'static, -    ReturnInterface: 'static + ?Sized, -{ -    pub fn new( -        func: &'static (dyn Fn(&DIContainerT) -> TransientPtr<ReturnInterface> -                      + Send -                      + Sync), -    ) -> Self -    { -        Self { func } -    } -} - -impl<ReturnInterface, DIContainerT> IThreadsafeFactory<ReturnInterface, DIContainerT> -    for ThreadsafeCastableFactory<ReturnInterface, DIContainerT> -where -    DIContainerT: 'static, -    ReturnInterface: 'static + ?Sized, -{ -    fn call(&self, di_container: &DIContainerT) -> TransientPtr<ReturnInterface> -    { -        (self.func)(di_container) -    } -} - -impl<ReturnInterface, DIContainerT> AnyFactory -    for ThreadsafeCastableFactory<ReturnInterface, DIContainerT> -where -    DIContainerT: 'static, -    ReturnInterface: 'static + ?Sized, -{ -} - -impl<ReturnInterface, DIContainerT> AnyThreadsafeFactory -    for ThreadsafeCastableFactory<ReturnInterface, DIContainerT> -where -    DIContainerT: 'static, -    ReturnInterface: 'static + ?Sized, -{ -} - -impl<ReturnInterface, DIContainerT> Debug -    for ThreadsafeCastableFactory<ReturnInterface, DIContainerT> -where -    DIContainerT: 'static, -    ReturnInterface: 'static + ?Sized, -{ -    #[cfg(not(tarpaulin_include))] -    fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result -    { -        let ret = type_name::<TransientPtr<ReturnInterface>>(); - -        formatter.write_fmt(format_args!( -            "ThreadsafeCastableFactory (&AsyncDIContainer) -> {ret} {{ ... }}", -        )) -    } -} - -#[cfg(test)] -mod tests -{ -    use super::*; -    use crate::di_container::asynchronous::MockAsyncDIContainer; - -    #[derive(Debug, PartialEq, Eq)] -    struct Bacon -    { -        heal_amount: u32, -    } - -    #[test] -    fn can_call() -    { -        let castable_factory = -            ThreadsafeCastableFactory::new(&|_: &MockAsyncDIContainer| { -                TransientPtr::new(Bacon { heal_amount: 27 }) -            }); - -        let mock_di_container = MockAsyncDIContainer::new(); - -        let output = castable_factory.call(&mock_di_container); - -        assert_eq!(output, TransientPtr::new(Bacon { heal_amount: 27 })); -    } -} diff --git a/src/private/factory.rs b/src/private/factory.rs deleted file mode 100644 index 7191c2c..0000000 --- a/src/private/factory.rs +++ /dev/null @@ -1,20 +0,0 @@ -use crate::private::cast::CastFrom; -use crate::ptr::TransientPtr; - -/// Interface for a factory. -pub trait IFactory<ReturnInterface, DIContainerT>: CastFrom -where -    ReturnInterface: 'static + ?Sized, -{ -    fn call(&self, di_container: &DIContainerT) -> TransientPtr<ReturnInterface>; -} - -/// Interface for a threadsafe factory. -#[cfg(feature = "async")] -pub trait IThreadsafeFactory<ReturnInterface, DIContainerT>: -    crate::private::cast::CastFromArc -where -    ReturnInterface: 'static + ?Sized, -{ -    fn call(&self, di_container: &DIContainerT) -> TransientPtr<ReturnInterface>; -} diff --git a/src/private/mod.rs b/src/private/mod.rs index 8b20333..9b03ce8 100644 --- a/src/private/mod.rs +++ b/src/private/mod.rs @@ -4,12 +4,3 @@  pub mod cast;  pub extern crate linkme; - -#[cfg(feature = "factory")] -pub mod any_factory; - -#[cfg(feature = "factory")] -pub mod factory; - -#[cfg(feature = "factory")] -pub mod castable_factory;  | 
