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 --- examples/async-factory/main.rs | 4 +++- examples/async/interfaces/food.rs | 3 ++- examples/factory/interfaces/user.rs | 4 +++- 3 files changed, 8 insertions(+), 3 deletions(-) (limited to 'examples') diff --git a/examples/async-factory/main.rs b/examples/async-factory/main.rs index 76efb2f..d368a32 100644 --- a/examples/async-factory/main.rs +++ b/examples/async-factory/main.rs @@ -6,6 +6,7 @@ use std::time::Duration; use anyhow::Result; use syrette::di_container::asynchronous::prelude::*; +use syrette::future::BoxFuture; use syrette::ptr::TransientPtr; use syrette::{declare_default_factory, factory}; use tokio::time::sleep; @@ -16,7 +17,8 @@ trait IFoo: Send + Sync } #[factory(async = true)] -type IFooFactory = dyn Fn(i32) -> dyn IFoo; +type IFooFactory = + dyn Fn(i32) -> BoxFuture<'static, TransientPtr> + Send + Sync; struct Foo { diff --git a/examples/async/interfaces/food.rs b/examples/async/interfaces/food.rs index e85519b..9d88083 100644 --- a/examples/async/interfaces/food.rs +++ b/examples/async/interfaces/food.rs @@ -1,4 +1,5 @@ use syrette::factory; +use syrette::ptr::TransientPtr; pub trait IFood: Send + Sync { @@ -6,4 +7,4 @@ pub trait IFood: Send + Sync } #[factory(threadsafe = true)] -pub type IFoodFactory = dyn Fn() -> dyn IFood; +pub type IFoodFactory = dyn Fn() -> TransientPtr + Send + Sync; diff --git a/examples/factory/interfaces/user.rs b/examples/factory/interfaces/user.rs index 75fbc87..aafd0cb 100644 --- a/examples/factory/interfaces/user.rs +++ b/examples/factory/interfaces/user.rs @@ -1,4 +1,5 @@ use syrette::factory; +use syrette::ptr::TransientPtr; pub trait IUser { @@ -8,4 +9,5 @@ pub trait IUser } #[factory] -pub type IUserFactory = dyn Fn(&'static str, &'static str, &'static str) -> dyn IUser; +pub type IUserFactory = + dyn Fn(&'static str, &'static str, &'static str) -> TransientPtr; -- cgit v1.2.3-18-g5258