aboutsummaryrefslogtreecommitdiff
path: root/examples/named/bootstrap.rs
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2022-08-27 23:41:41 +0200
committerHampusM <hampus@hampusmat.com>2022-08-27 23:41:41 +0200
commite0f90a8e384615c79d7d51c66d19294d75e79391 (patch)
treef3df3d1cd92f7d4a978feaa5a9a5f773dd0901ee /examples/named/bootstrap.rs
parentd4078c84a83d121a4e3492955359cedb3b404476 (diff)
feat: implement named bindings
Diffstat (limited to 'examples/named/bootstrap.rs')
-rw-r--r--examples/named/bootstrap.rs29
1 files changed, 29 insertions, 0 deletions
diff --git a/examples/named/bootstrap.rs b/examples/named/bootstrap.rs
new file mode 100644
index 0000000..b5fa39d
--- /dev/null
+++ b/examples/named/bootstrap.rs
@@ -0,0 +1,29 @@
+use anyhow::Result;
+use syrette::DIContainer;
+
+use crate::interfaces::ninja::INinja;
+use crate::interfaces::weapon::IWeapon;
+use crate::katana::Katana;
+use crate::ninja::Ninja;
+use crate::shuriken::Shuriken;
+
+pub fn bootstrap() -> Result<DIContainer>
+{
+ let mut di_container: DIContainer = DIContainer::new();
+
+ di_container
+ .bind::<dyn IWeapon>()
+ .to::<Katana>()?
+ .in_transient_scope()
+ .when_named("strong")?;
+
+ di_container
+ .bind::<dyn IWeapon>()
+ .to::<Shuriken>()?
+ .in_transient_scope()
+ .when_named("weak")?;
+
+ di_container.bind::<dyn INinja>().to::<Ninja>()?;
+
+ Ok(di_container)
+}