From 0f2756536e8fc311119da2af5b4dcc33f41bec6e Mon Sep 17 00:00:00 2001 From: HampusM Date: Wed, 4 Oct 2023 12:51:06 +0200 Subject: refactor!: remove factory & declare_default_factory macros BREAKING CHANGE: The factory and the declare_default_factory macros have been removed. They are no longer needed to use factories --- src/private/any_factory.rs | 11 --- src/private/castable_factory/mod.rs | 91 ------------------------- src/private/castable_factory/threadsafe.rs | 103 ----------------------------- src/private/factory.rs | 20 ------ src/private/mod.rs | 9 --- 5 files changed, 234 deletions(-) delete mode 100644 src/private/any_factory.rs delete mode 100644 src/private/castable_factory/mod.rs delete mode 100644 src/private/castable_factory/threadsafe.rs delete mode 100644 src/private/factory.rs (limited to 'src/private') 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 -where - ReturnInterface: 'static + ?Sized, - DIContainerT: 'static, -{ - func: &'static dyn Fn(&DIContainerT) -> TransientPtr, -} - -impl CastableFactory -where - ReturnInterface: 'static + ?Sized, -{ - pub fn new( - func: &'static dyn Fn(&DIContainerT) -> TransientPtr, - ) -> Self - { - Self { func } - } -} - -impl IFactory - for CastableFactory -where - ReturnInterface: 'static + ?Sized, -{ - fn call(&self, di_container: &DIContainerT) -> TransientPtr - { - (self.func)(di_container) - } -} - -impl AnyFactory - for CastableFactory -where - ReturnInterface: 'static + ?Sized, - DIContainerT: 'static, -{ -} - -impl Debug - for CastableFactory -where - ReturnInterface: 'static + ?Sized, -{ - #[cfg(not(tarpaulin_include))] - fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result - { - let ret = type_name::>(); - - 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 -where - DIContainerT: 'static, - ReturnInterface: 'static + ?Sized, -{ - func: &'static (dyn Fn(&DIContainerT) -> TransientPtr + Send + Sync), -} - -impl - ThreadsafeCastableFactory -where - DIContainerT: 'static, - ReturnInterface: 'static + ?Sized, -{ - pub fn new( - func: &'static (dyn Fn(&DIContainerT) -> TransientPtr - + Send - + Sync), - ) -> Self - { - Self { func } - } -} - -impl IThreadsafeFactory - for ThreadsafeCastableFactory -where - DIContainerT: 'static, - ReturnInterface: 'static + ?Sized, -{ - fn call(&self, di_container: &DIContainerT) -> TransientPtr - { - (self.func)(di_container) - } -} - -impl AnyFactory - for ThreadsafeCastableFactory -where - DIContainerT: 'static, - ReturnInterface: 'static + ?Sized, -{ -} - -impl AnyThreadsafeFactory - for ThreadsafeCastableFactory -where - DIContainerT: 'static, - ReturnInterface: 'static + ?Sized, -{ -} - -impl Debug - for ThreadsafeCastableFactory -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::>(); - - 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: CastFrom -where - ReturnInterface: 'static + ?Sized, -{ - fn call(&self, di_container: &DIContainerT) -> TransientPtr; -} - -/// Interface for a threadsafe factory. -#[cfg(feature = "async")] -pub trait IThreadsafeFactory: - crate::private::cast::CastFromArc -where - ReturnInterface: 'static + ?Sized, -{ - fn call(&self, di_container: &DIContainerT) -> TransientPtr; -} 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; -- cgit v1.2.3-18-g5258