diff options
Diffstat (limited to 'examples/named/ninja.rs')
-rw-r--r-- | examples/named/ninja.rs | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/examples/named/ninja.rs b/examples/named/ninja.rs new file mode 100644 index 0000000..2069f14 --- /dev/null +++ b/examples/named/ninja.rs @@ -0,0 +1,45 @@ +use syrette::injectable; +use syrette::ptr::TransientPtr; + +use crate::interfaces::ninja::INinja; +use crate::interfaces::weapon::IWeapon; + +pub struct Ninja +{ + strong_weapon: TransientPtr<dyn IWeapon>, + weak_weapon: TransientPtr<dyn IWeapon>, +} + +#[injectable(INinja)] +impl Ninja +{ + pub fn new( + #[rustfmt::skip] // Prevent rustfmt from turning this into a single line + #[syrette::named("strong")] + strong_weapon: TransientPtr<dyn IWeapon>, + + #[rustfmt::skip] // Prevent rustfmt from turning this into a single line + #[named("weak")] + weak_weapon: TransientPtr<dyn IWeapon>, + ) -> Self + { + Self { + strong_weapon, + weak_weapon, + } + } +} + +impl INinja for Ninja +{ + fn use_weapons(&self) + { + println!("Ninja is using his strong weapon!"); + + self.strong_weapon.use_it(); + + println!("Ninja is using his weak weapon!"); + + self.weak_weapon.use_it(); + } +} |