From e381ae3b8649de47ba46925e402946658ac16d20 Mon Sep 17 00:00:00 2001 From: HampusM Date: Tue, 15 Aug 2023 23:15:19 +0200 Subject: fix!: make the factory macro not change its input BREAKING CHANGE: The factory macro no longer - Changes the return type to be inside of a TransientPtr - Adds Send + Sync bounds when the threadsafe or the async flag is set - Changes the return type be inside of a BoxFuture when the async flag is set --- src/di_container/blocking/mod.rs | 48 +++++++++++++++------------------------- 1 file changed, 18 insertions(+), 30 deletions(-) (limited to 'src/di_container/blocking/mod.rs') diff --git a/src/di_container/blocking/mod.rs b/src/di_container/blocking/mod.rs index 5781583..aa89aad 100644 --- a/src/di_container/blocking/mod.rs +++ b/src/di_container/blocking/mod.rs @@ -493,28 +493,22 @@ mod tests } } - type FactoryFunc = dyn Fn< - (std::rc::Rc,), - Output = Box< - dyn Fn<(Vec,), Output = crate::ptr::TransientPtr>, - >, - >; - use crate as syrette; #[crate::factory] - type IUserManagerFactory = dyn Fn(Vec) -> dyn IUserManager; + type IUserManagerFactory = dyn Fn(Vec) -> TransientPtr; let di_container = DIContainer::new(); - let factory_func: &'static FactoryFunc = &|_: Rc| { - Box::new(move |users| { - let user_manager: TransientPtr = - TransientPtr::new(UserManager::new(users)); + let factory_func: &dyn Fn(Rc) -> Box = + &|_: Rc| { + Box::new(move |users| { + let user_manager: TransientPtr = + TransientPtr::new(UserManager::new(users)); - user_manager - }) - }; + user_manager + }) + }; let mut mock_provider = mocks::blocking_provider::MockProvider::new(); @@ -577,28 +571,22 @@ mod tests } } - type FactoryFunc = dyn Fn< - (std::rc::Rc,), - Output = Box< - dyn Fn<(Vec,), Output = crate::ptr::TransientPtr>, - >, - >; - use crate as syrette; #[crate::factory] - type IUserManagerFactory = dyn Fn(Vec) -> dyn IUserManager; + type IUserManagerFactory = dyn Fn(Vec) -> TransientPtr; let di_container = DIContainer::new(); - let factory_func: &'static FactoryFunc = &|_: Rc| { - Box::new(move |users| { - let user_manager: TransientPtr = - TransientPtr::new(UserManager::new(users)); + let factory_func: &dyn Fn(Rc) -> Box = + &|_: Rc| { + Box::new(move |users| { + let user_manager: TransientPtr = + TransientPtr::new(UserManager::new(users)); - user_manager - }) - }; + user_manager + }) + }; let mut mock_provider = mocks::blocking_provider::MockProvider::new(); -- cgit v1.2.3-18-g5258