Skip to main content

Service

Trait Service 

Source
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 dependencies
  • Arc<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§

Source

type Dependencies: Resolvable

The dependencies required to create this service.

Use () for no dependencies, Arc<T> for one, or tuples for multiple.

Required Methods§

Source

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".

Implementors§