From 8651f84f205da7a89f2fc7333d1dd8de0d80a22b Mon Sep 17 00:00:00 2001 From: HampusM Date: Sat, 17 Sep 2022 16:12:45 +0200 Subject: refactor!: make async DI container be used inside of a Arc BREAKING CHANGE: The async DI container is to be used inside of a Arc & it also no longer implements Default --- examples/async/bootstrap.rs | 11 +++++++---- examples/async/main.rs | 14 ++------------ 2 files changed, 9 insertions(+), 16 deletions(-) (limited to 'examples/async') diff --git a/examples/async/bootstrap.rs b/examples/async/bootstrap.rs index b640712..7e1d2cd 100644 --- a/examples/async/bootstrap.rs +++ b/examples/async/bootstrap.rs @@ -1,3 +1,5 @@ +use std::sync::Arc; + use anyhow::Result; use syrette::async_di_container::AsyncDIContainer; @@ -11,18 +13,19 @@ use crate::interfaces::cat::ICat; use crate::interfaces::dog::IDog; use crate::interfaces::human::IHuman; -pub async fn bootstrap() -> Result +pub async fn bootstrap() -> Result> { let mut di_container = AsyncDIContainer::new(); di_container .bind::() - .to::()? + .to::() + .await? .in_singleton_scope() .await?; - di_container.bind::().to::()?; - di_container.bind::().to::()?; + di_container.bind::().to::().await?; + di_container.bind::().to::().await?; Ok(di_container) } diff --git a/examples/async/main.rs b/examples/async/main.rs index f72ff39..3c884fe 100644 --- a/examples/async/main.rs +++ b/examples/async/main.rs @@ -2,11 +2,8 @@ #![deny(clippy::pedantic)] #![allow(clippy::module_name_repetitions)] -use std::sync::Arc; - use anyhow::Result; use tokio::spawn; -use tokio::sync::Mutex; mod animals; mod bootstrap; @@ -21,12 +18,10 @@ async fn main() -> Result<()> { println!("Hello, world!"); - let di_container = Arc::new(Mutex::new(bootstrap().await?)); + let di_container = bootstrap().await?; { let dog = di_container - .lock() - .await .get::() .await? .threadsafe_singleton()?; @@ -35,12 +30,7 @@ async fn main() -> Result<()> } spawn(async move { - let human = di_container - .lock() - .await - .get::() - .await? - .transient()?; + let human = di_container.get::().await?.transient()?; human.make_pets_make_sounds(); -- cgit v1.2.3-18-g5258