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§
Sourcefn provide<T: Service>(&self)
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();Sourcefn provide_singleton<T: Service>(&self) -> bool
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.
Sourcefn provide_transient<T: Service>(&self)
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".