Skip to main content

ServiceProvider

Trait ServiceProvider 

Source
pub trait ServiceProvider {
    // Required methods
    fn provide<T: Service>(&self);
    fn provide_singleton<T: Service>(&self) -> bool;
    fn provide_transient<T: Service>(&self);
}
Expand description

Extension trait for containers to auto-register services.

Required Methods§

Source

fn provide<T: Service>(&self)

Register a service using its Service implementation.

The service will be created lazily on first access, with dependencies resolved from the container.

§Panics

The created factory will panic at runtime if dependencies are missing. For compile-time safety, use the typed builder API.

§Example
use dependency_injector::{Container, verified::{Service, ServiceProvider}};

#[derive(Clone)]
struct MyService;

impl Service for MyService {
    type Dependencies = ();
    fn create(_: ()) -> Self { MyService }
}

let container = Container::new();
container.provide::<MyService>();

let service = container.get::<MyService>().unwrap();
Source

fn provide_singleton<T: Service>(&self) -> bool

Register a service as a singleton with pre-resolved dependencies.

Dependencies are resolved immediately, not lazily.

§Returns

true if all dependencies were resolved and the service was registered, false if any dependency was missing.

Source

fn provide_transient<T: Service>(&self)

Register a service as transient.

A new instance is created on every resolution.

Dyn Compatibility§

This trait is not dyn compatible.

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

Implementors§