diff options
author | HampusM <hampus@hampusmat.com> | 2022-07-27 19:10:30 +0200 |
---|---|---|
committer | HampusM <hampus@hampusmat.com> | 2022-07-31 12:17:51 +0200 |
commit | f75a7d58135825c4f9094c1e10f36de4a952f455 (patch) | |
tree | bd8bae08591b7355407ee44002e0494bdd8d2268 /examples/basic | |
parent | 3388f857b32cf1893d7b54582c8fd16e4965550b (diff) |
feat: add injecting singletons into constructors
Diffstat (limited to 'examples/basic')
-rw-r--r-- | examples/basic/animals/human.rs | 6 | ||||
-rw-r--r-- | examples/basic/bootstrap.rs | 5 | ||||
-rw-r--r-- | examples/basic/main.rs | 2 |
3 files changed, 8 insertions, 5 deletions
diff --git a/examples/basic/animals/human.rs b/examples/basic/animals/human.rs index 8e52b5b..d9b848b 100644 --- a/examples/basic/animals/human.rs +++ b/examples/basic/animals/human.rs @@ -1,5 +1,5 @@ use syrette::injectable; -use syrette::ptr::TransientPtr; +use syrette::ptr::{SingletonPtr, TransientPtr}; use crate::interfaces::cat::ICat; use crate::interfaces::dog::IDog; @@ -7,14 +7,14 @@ use crate::interfaces::human::IHuman; pub struct Human { - dog: TransientPtr<dyn IDog>, + dog: SingletonPtr<dyn IDog>, cat: TransientPtr<dyn ICat>, } #[injectable(IHuman)] impl Human { - pub fn new(dog: TransientPtr<dyn IDog>, cat: TransientPtr<dyn ICat>) -> Self + pub fn new(dog: SingletonPtr<dyn IDog>, cat: TransientPtr<dyn ICat>) -> Self { Self { dog, cat } } diff --git a/examples/basic/bootstrap.rs b/examples/basic/bootstrap.rs index 71ef713..10a7041 100644 --- a/examples/basic/bootstrap.rs +++ b/examples/basic/bootstrap.rs @@ -14,7 +14,10 @@ pub fn bootstrap() -> DIContainer { let mut di_container: DIContainer = DIContainer::new(); - di_container.bind::<dyn IDog>().to::<Dog>(); + di_container + .bind::<dyn IDog>() + .to_singleton::<Dog>() + .unwrap(); di_container.bind::<dyn ICat>().to::<Cat>(); di_container.bind::<dyn IHuman>().to::<Human>(); diff --git a/examples/basic/main.rs b/examples/basic/main.rs index f96d963..3a937c3 100644 --- a/examples/basic/main.rs +++ b/examples/basic/main.rs @@ -16,7 +16,7 @@ fn main() let di_container = bootstrap(); - let dog = di_container.get::<dyn IDog>().unwrap(); + let dog = di_container.get_singleton::<dyn IDog>().unwrap(); dog.woof(); |