diff options
author | HampusM <hampus@hampusmat.com> | 2023-08-15 23:15:19 +0200 |
---|---|---|
committer | HampusM <hampus@hampusmat.com> | 2023-08-15 23:18:59 +0200 |
commit | e381ae3b8649de47ba46925e402946658ac16d20 (patch) | |
tree | 32ecc7e4592f25d43dc1e76399d3fffae3272e1e /examples | |
parent | 9423d67efb161d9a94a7ab6c5899c6bc7ecaee7c (diff) |
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
Diffstat (limited to 'examples')
-rw-r--r-- | examples/async-factory/main.rs | 4 | ||||
-rw-r--r-- | examples/async/interfaces/food.rs | 3 | ||||
-rw-r--r-- | examples/factory/interfaces/user.rs | 4 |
3 files changed, 8 insertions, 3 deletions
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<dyn IFoo>> + 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<dyn IFood> + 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<dyn IUser>; |