aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2023-08-15 23:15:19 +0200
committerHampusM <hampus@hampusmat.com>2023-08-15 23:18:59 +0200
commite381ae3b8649de47ba46925e402946658ac16d20 (patch)
tree32ecc7e4592f25d43dc1e76399d3fffae3272e1e /examples
parent9423d67efb161d9a94a7ab6c5899c6bc7ecaee7c (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.rs4
-rw-r--r--examples/async/interfaces/food.rs3
-rw-r--r--examples/factory/interfaces/user.rs4
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>;