pub trait Service: Injectable + Sized {
type Dependencies: Resolvable;
// Required method
fn create(deps: Self::Dependencies) -> Self;
}Expand description
A service that declares its dependencies at compile time.
The Dependencies associated type specifies what the service needs,
and create defines how to construct the service given those dependencies.
§Supported Dependency Types
()- No dependenciesArc<T>- Single required dependency(Arc<A>, Arc<B>)- Multiple dependencies (tuples up to 12)Option<Arc<T>>- Optional dependency(Arc<A>, Option<Arc<B>>)- Tuples may mix required and optional
§Example
use dependency_injector::verified::Service;
use std::sync::Arc;
#[derive(Clone)]
struct Config {
debug: bool,
}
impl Service for Config {
type Dependencies = ();
fn create(_: ()) -> Self {
Config { debug: false }
}
}
#[derive(Clone)]
struct Logger {
config: Arc<Config>,
}
impl Service for Logger {
type Dependencies = Arc<Config>;
fn create(config: Arc<Config>) -> Self {
Logger { config }
}
}Required Associated Types§
Sourcetype Dependencies: Resolvable
type Dependencies: Resolvable
The dependencies required to create this service.
Use () for no dependencies, Arc<T> for one, or tuples for multiple.
Required Methods§
Sourcefn create(deps: Self::Dependencies) -> Self
fn create(deps: Self::Dependencies) -> Self
Create a new instance given the resolved dependencies.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".