From 862453174dc15e5184a4f86bb14f203ccef94de6 Mon Sep 17 00:00:00 2001 From: HampusM Date: Tue, 19 Sep 2023 20:37:28 +0200 Subject: docs: add examples to DI container & related functions --- src/di_container/asynchronous/mod.rs | 92 ++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) (limited to 'src/di_container/asynchronous/mod.rs') diff --git a/src/di_container/asynchronous/mod.rs b/src/di_container/asynchronous/mod.rs index 4be232d..929e2c0 100644 --- a/src/di_container/asynchronous/mod.rs +++ b/src/di_container/asynchronous/mod.rs @@ -93,6 +93,31 @@ impl AsyncDIContainer impl AsyncDIContainer { /// Returns a new [`AsyncBindingBuilder`] for the given interface. + /// + /// # Examples + /// ``` + /// # use syrette::{AsyncDIContainer, injectable}; + /// # + /// # struct DiskWriter {} + /// # + /// # #[injectable(async = true)] + /// # impl DiskWriter + /// # { + /// # fn new() -> Self + /// # { + /// # Self {} + /// # } + /// # } + /// # + /// # #[tokio::main] + /// # async fn main() -> Result<(), Box> { + /// let mut di_container = AsyncDIContainer::new(); + /// + /// di_container.bind::().to::().await?; + /// # + /// # Ok(()) + /// # } + /// ``` #[allow(clippy::missing_panics_doc)] pub fn bind(&mut self) -> AsyncBindingBuilder<'_, Interface> where @@ -112,6 +137,36 @@ impl AsyncDIContainer /// - No binding for `Interface` exists /// - Resolving the binding for `Interface` fails /// - Casting the binding for `Interface` fails + /// + /// # Examples + /// ``` + /// # use syrette::{AsyncDIContainer, injectable}; + /// # + /// # struct DeviceManager {} + /// # + /// # #[injectable(async = true)] + /// # impl DeviceManager + /// # { + /// # fn new() -> Self + /// # { + /// # Self {} + /// # } + /// # } + /// # + /// # #[tokio::main] + /// # async fn main() -> Result<(), Box> { + /// let mut di_container = AsyncDIContainer::new(); + /// + /// di_container + /// .bind::() + /// .to::() + /// .await?; + /// + /// let device_manager = di_container.get::().await?.transient(); + /// # + /// # Ok(()) + /// # } + /// ``` pub async fn get( &self, ) -> Result, AsyncDIContainerError> @@ -129,6 +184,43 @@ impl AsyncDIContainer /// - No binding for `Interface` with name `name` exists /// - Resolving the binding for `Interface` fails /// - Casting the binding for `Interface` fails + /// + /// # Examples + /// ``` + /// # use syrette::{AsyncDIContainer, injectable}; + /// # + /// # struct DeviceManager {} + /// # + /// # #[injectable(async = true)] + /// # impl DeviceManager + /// # { + /// # fn new() -> Self + /// # { + /// # Self {} + /// # } + /// # } + /// # + /// # #[tokio::main] + /// # async fn main() -> Result<(), Box> { + /// let mut di_container = AsyncDIContainer::new(); + /// + /// di_container + /// .bind::() + /// .to::() + /// .await? + /// .in_transient_scope() + /// .await + /// .when_named("usb") + /// .await; + /// + /// let device_manager = di_container + /// .get_named::("usb") + /// .await? + /// .transient(); + /// # + /// # Ok(()) + /// # } + /// ``` pub async fn get_named( &self, name: &'static str, -- cgit v1.2.3-18-g5258