diff options
author | HampusM <hampus@hampusmat.com> | 2023-09-19 20:37:28 +0200 |
---|---|---|
committer | HampusM <hampus@hampusmat.com> | 2023-09-19 21:32:32 +0200 |
commit | 862453174dc15e5184a4f86bb14f203ccef94de6 (patch) | |
tree | 900cb5e7f93735b5f81b3cbc0c4934688a4307ce /src/di_container/blocking/binding/scope_configurator.rs | |
parent | 4fd0d6b4951b08a20d5378bca75561109dc6d036 (diff) |
docs: add examples to DI container & related functions
Diffstat (limited to 'src/di_container/blocking/binding/scope_configurator.rs')
-rw-r--r-- | src/di_container/blocking/binding/scope_configurator.rs | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/src/di_container/blocking/binding/scope_configurator.rs b/src/di_container/blocking/binding/scope_configurator.rs index 3d939ba..ee935a5 100644 --- a/src/di_container/blocking/binding/scope_configurator.rs +++ b/src/di_container/blocking/binding/scope_configurator.rs @@ -47,6 +47,33 @@ where /// Configures the binding to be in a transient scope. /// /// This is the default. + /// + /// # Examples + /// ``` + /// # use syrette::{DIContainer, injectable}; + /// # + /// # struct Authenticator {} + /// # + /// # #[injectable] + /// # impl Authenticator + /// # { + /// # fn new() -> Self + /// # { + /// # Self {} + /// # } + /// # } + /// # + /// # fn main() -> Result<(), Box<dyn std::error::Error>> { + /// let mut di_container = DIContainer::new(); + /// + /// di_container + /// .bind::<Authenticator>() + /// .to::<Authenticator>()? + /// .in_transient_scope(); + /// # + /// # Ok(()) + /// # } + /// ``` #[allow(clippy::must_use_candidate)] pub fn in_transient_scope(self) -> BindingWhenConfigurator<'di_container, Interface> { @@ -59,6 +86,58 @@ where /// /// # Errors /// Will return Err if resolving the implementation fails. + /// + /// # Examples + /// ``` + /// # use std::sync::atomic::{AtomicBool, Ordering}; + /// # use syrette::{DIContainer, injectable}; + /// # + /// # struct AudioManager + /// # { + /// # is_sound_playing: AtomicBool + /// # } + /// # + /// # #[injectable] + /// # impl AudioManager + /// # { + /// # fn new() -> Self + /// # { + /// # Self { is_sound_playing: AtomicBool::new(false) } + /// # } + /// # + /// # fn play_long_sound(&self) + /// # { + /// # self.is_sound_playing.store(true, Ordering::Relaxed); + /// # } + /// # + /// # fn is_sound_playing(&self) -> bool + /// # { + /// # self.is_sound_playing.load(Ordering::Relaxed) + /// # } + /// # + /// # } + /// # + /// # fn main() -> Result<(), Box<dyn std::error::Error>> { + /// let mut di_container = DIContainer::new(); + /// + /// di_container + /// .bind::<AudioManager>() + /// .to::<AudioManager>()? + /// .in_singleton_scope(); + /// + /// { + /// let audio_manager = di_container.get::<AudioManager>()?.singleton()?; + /// + /// audio_manager.play_long_sound(); + /// } + /// + /// let audio_manager = di_container.get::<AudioManager>()?.singleton()?; + /// + /// assert!(audio_manager.is_sound_playing()); + /// # + /// # Ok(()) + /// # } + /// ``` pub fn in_singleton_scope( self, ) -> Result< |