depcon

Crates.iodepcon
lib.rsdepcon
version0.3.0
sourcesrc
created_at2022-02-11 18:07:31.013747
updated_at2022-02-15 07:56:36.211634
descriptionSimple & flexible dependency injection framework
homepage
repositoryhttps://github.com/andybarron/depcon
max_upload_size
id530865
size33,056
mio-core (github:tokio-rs:mio-core)

documentation

README

depcon

Dependency injection container

Documentation Build status Test coverage
crates.io Downloads Rust version
MIT license

Quickstart

use depcon::prelude::*;
use std::sync::Arc;

// 1. Define your services!
trait Database {}
trait Repository {}

// 2. Define providers, using #[derive(Injectable)].
//    Use Arc<dyn Trait> for service dependencies.
#[derive(Injectable)]
struct DatabaseImpl {}
#[derive(Injectable)]
struct RepositoryImpl {
  db: Arc<dyn Database>,
}

// 3. Implement services, using #[auto_provide].
#[auto_provide]
impl Database for DatabaseImpl {}
#[auto_provide]
impl Repository for RepositoryImpl {}

// 4. Create your container, and you're off to the races!
fn main() {
    let mut container = Container::auto().unwrap();
    let result = container.resolve::<dyn Repository>();

    assert!(result.is_ok());
    let repository: Arc<dyn Repository> = result.unwrap();
}
Commit count: 51

cargo fmt