From 47c68f7d70cfa8c639f72361d8d0362048647075 Mon Sep 17 00:00:00 2001 From: HampusM Date: Sat, 20 Aug 2022 15:14:13 +0200 Subject: docs: improve the factory example --- examples/factory/user_manager.rs | 50 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 examples/factory/user_manager.rs (limited to 'examples/factory/user_manager.rs') diff --git a/examples/factory/user_manager.rs b/examples/factory/user_manager.rs new file mode 100644 index 0000000..32ccbe9 --- /dev/null +++ b/examples/factory/user_manager.rs @@ -0,0 +1,50 @@ +use syrette::injectable; +use syrette::ptr::{FactoryPtr, TransientPtr}; + +use crate::interfaces::user::{IUser, IUserFactory}; +use crate::interfaces::user_manager::IUserManager; + +pub struct UserManager +{ + users: Vec>, + user_factory: FactoryPtr, +} + +#[injectable(IUserManager)] +impl UserManager +{ + pub fn new(user_factory: FactoryPtr) -> Self + { + Self { + users: Vec::new(), + user_factory, + } + } +} + +impl IUserManager for UserManager +{ + fn fill_with_users(&mut self) + { + self.users + .push((self.user_factory)("Bob", "1983-04-13", "abc1234")); + + self.users + .push((self.user_factory)("Anna", "1998-01-20", "IlovemYCat")); + + self.users + .push((self.user_factory)("David", "2000-11-05", "12345678")); + } + + fn print_users(&self) + { + for user in &self.users { + println!( + "{}, born {}, password is '{}'", + user.get_name(), + user.get_date_of_birth(), + user.get_password() + ); + } + } +} -- cgit v1.2.3-18-g5258