ferroui_dependency_injection/
default_service_provider_factory.rs1use crate::*;
3
4pub trait IServiceProviderFactory<TContainerBuilder> {
5 fn create_builder(&self, services: ServiceCollection) -> TContainerBuilder;
6 fn create_service_provider(&self, builder: TContainerBuilder)
7 -> ServiceResult<ServiceProvider>;
8}
9
10#[derive(Clone, Copy, Debug, Default)]
11pub struct DefaultServiceProviderFactory {
12 options: ServiceProviderOptions,
13}
14impl DefaultServiceProviderFactory {
15 pub fn new(options: ServiceProviderOptions) -> Self {
16 Self { options }
17 }
18}
19impl IServiceProviderFactory<ServiceCollection> for DefaultServiceProviderFactory {
20 fn create_builder(&self, services: ServiceCollection) -> ServiceCollection {
21 services
22 }
23 fn create_service_provider(
24 &self,
25 builder: ServiceCollection,
26 ) -> ServiceResult<ServiceProvider> {
27 builder.build_service_provider(self.options)
28 }
29}