use syrette::injectable; use syrette::ptr::{SingletonPtr, TransientPtr}; use crate::interfaces::animal_store::IAnimalStore; use crate::interfaces::cat::ICat; use crate::interfaces::dog::IDog; pub struct AnimalStore { dog: SingletonPtr, cat: TransientPtr, } #[injectable] impl AnimalStore { fn new(dog: SingletonPtr, cat: TransientPtr) -> Self { Self { dog, cat } } } impl IAnimalStore for AnimalStore { fn get_dog(&self) -> SingletonPtr { self.dog.clone() } fn get_cat(&self) -> &TransientPtr { &self.cat } }