#macro #provider #di #imacro

macro imacro

Zero cost dependency injection macros

1 unstable release

new 0.4.4 Apr 15, 2025

#434 in Procedural macros


Used in 2 crates (via rioc)

MIT license

66KB
1.5K SLoC

Rioc Derive Macros

This crate provides derive macros for the Rioc dependency injection framework.

Provider Macro

The #[derive(Provider)] macro generates implementation code for dependency injection.

Basic Usage

use rioc::{Provider, Container};

// Define a dependency
struct MyDependency;

// Define a service that depends on MyDependency
#[derive(Provider)]
struct MyService {
    #[inject(name = "my_dependency")]
    dependency: MyDependency,
}

fn main() {
    // Create a container
    let mut container = Container::new();
    
    // Register the dependency
    container.register("my_dependency", MyDependency);
    
    // Resolve the service with dependencies injected
    let service: MyService = container.resolve();
    
    // Now you can use the service
    println!("Service created successfully!");
}

Generic Types

use rioc::Provider;

#[derive(Provider)]
struct GenericService<T> {
    dependency: T,
}

Installation

Add to your Cargo.toml:

[dependencies]
rioc-derives = { path = "../derives" }

Dependencies

~205–640KB
~15K SLoC