From 080cc42bb1da09059dbc35049a7ded0649961e0c Mon Sep 17 00:00:00 2001 From: HampusM Date: Mon, 29 Aug 2022 20:52:56 +0200 Subject: feat: implement async functionality --- src/provider.rs | 122 -------------------------------------------------------- 1 file changed, 122 deletions(-) delete mode 100644 src/provider.rs (limited to 'src/provider.rs') diff --git a/src/provider.rs b/src/provider.rs deleted file mode 100644 index 13674b9..0000000 --- a/src/provider.rs +++ /dev/null @@ -1,122 +0,0 @@ -#![allow(clippy::module_name_repetitions)] -use std::marker::PhantomData; - -use crate::errors::injectable::InjectableError; -use crate::interfaces::injectable::Injectable; -use crate::ptr::{SingletonPtr, TransientPtr}; -use crate::DIContainer; - -#[derive(strum_macros::Display, Debug)] -pub enum Providable -{ - Transient(TransientPtr), - Singleton(SingletonPtr), - #[cfg(feature = "factory")] - Factory(crate::ptr::FactoryPtr), -} - -pub trait IProvider -{ - fn provide( - &self, - di_container: &DIContainer, - dependency_history: Vec<&'static str>, - ) -> Result; -} - -pub struct TransientTypeProvider -where - InjectableType: Injectable, -{ - injectable_phantom: PhantomData, -} - -impl TransientTypeProvider -where - InjectableType: Injectable, -{ - pub fn new() -> Self - { - Self { - injectable_phantom: PhantomData, - } - } -} - -impl IProvider for TransientTypeProvider -where - InjectableType: Injectable, -{ - fn provide( - &self, - di_container: &DIContainer, - dependency_history: Vec<&'static str>, - ) -> Result - { - Ok(Providable::Transient(InjectableType::resolve( - di_container, - dependency_history, - )?)) - } -} - -pub struct SingletonProvider -where - InjectableType: Injectable, -{ - singleton: SingletonPtr, -} - -impl SingletonProvider -where - InjectableType: Injectable, -{ - pub fn new(singleton: SingletonPtr) -> Self - { - Self { singleton } - } -} - -impl IProvider for SingletonProvider -where - InjectableType: Injectable, -{ - fn provide( - &self, - _di_container: &DIContainer, - _dependency_history: Vec<&'static str>, - ) -> Result - { - Ok(Providable::Singleton(self.singleton.clone())) - } -} - -#[cfg(feature = "factory")] -pub struct FactoryProvider -{ - factory: crate::ptr::FactoryPtr, -} - -#[cfg(feature = "factory")] -impl FactoryProvider -{ - pub fn new( - factory: crate::ptr::FactoryPtr, - ) -> Self - { - Self { factory } - } -} - -#[cfg(feature = "factory")] -impl IProvider for FactoryProvider -{ - fn provide( - &self, - _di_container: &DIContainer, - _dependency_history: Vec<&'static str>, - ) -> Result - { - Ok(Providable::Factory(self.factory.clone())) - } -} -- cgit v1.2.3-18-g5258