Skip to main content

IServiceCollectionExt

Trait IServiceCollectionExt 

Source
pub trait IServiceCollectionExt: Sized {
    // Required methods
    fn add_mediator(self) -> Self;
    fn add_request_endpoints(self) -> Self;
    fn add_controllers(self) -> Self;
    fn add_middleware<T>(self) -> Self
       where T: IMiddleware + Default + Send + Sync + 'static;
    fn add_pipeline<T>(self) -> Self
       where T: IPipelineBehavior + Default + Send + Sync + 'static;
    fn add_hosted_service<T>(self) -> Self
       where T: IHostedService + Default + Send + Sync + 'static;
}
Expand description

Extension methods for rust_dix::ServiceCollection to enable framework-level service registration patterns.

Required Methods§

Source

fn add_mediator(self) -> Self

Register the mediator in the DI container.

The actual IRequestHandler and IEventHandler implementations are registered via #[rust_dix::module] blocks (re-exported as lrwf::module).

Source

fn add_request_endpoints(self) -> Self

Signal that endpoints should be auto-discovered from #[get] / #[endpoint] annotations at compile time. The actual route table is built during Host::build() by scanning the inventory for RouteEntry items.

Source

fn add_controllers(self) -> Self

Register controller types scoped per request.

Source

fn add_middleware<T>(self) -> Self
where T: IMiddleware + Default + Send + Sync + 'static,

Register a middleware type in the DI container as a singleton.

Source

fn add_pipeline<T>(self) -> Self
where T: IPipelineBehavior + Default + Send + Sync + 'static,

Register a pipeline behavior in the DI container as a singleton.

Source

fn add_hosted_service<T>(self) -> Self
where T: IHostedService + Default + Send + Sync + 'static,

Register a hosted service in the DI container as a singleton.

Hosted services are started when the host starts (before accepting requests) and stopped during graceful shutdown.

Analogous to ASP.NET Core’s AddHostedService<T>().

§Example
Host::builder()
    .register(|svc| {
        svc.add_hosted_service::<DbInitService>()
    })
    .build()
    .run()
    .await

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl IServiceCollectionExt for ServiceCollection

Implementors§