aboutsummaryrefslogtreecommitdiff
path: root/examples/named/ninja.rs
diff options
context:
space:
mode:
Diffstat (limited to 'examples/named/ninja.rs')
-rw-r--r--examples/named/ninja.rs45
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();
+ }
+}