diff options
author | HampusM <hampus@hampusmat.com> | 2022-08-27 23:41:41 +0200 |
---|---|---|
committer | HampusM <hampus@hampusmat.com> | 2022-08-27 23:41:41 +0200 |
commit | e0f90a8e384615c79d7d51c66d19294d75e79391 (patch) | |
tree | f3df3d1cd92f7d4a978feaa5a9a5f773dd0901ee /examples/named/bootstrap.rs | |
parent | d4078c84a83d121a4e3492955359cedb3b404476 (diff) |
feat: implement named bindings
Diffstat (limited to 'examples/named/bootstrap.rs')
-rw-r--r-- | examples/named/bootstrap.rs | 29 |
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) +} |