imacro

Crates.ioimacro
lib.rsimacro
version0.4.8
created_at2025-04-15 06:42:38.997271+00
updated_at2025-04-22 02:25:36.610995+00
descriptionZero cost dependency injection macros
homepage
repositoryhttps://github.com/open1s/rioc
max_upload_size
id1634017
size75,690
Brian G (gaobrian)

documentation

README

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" }
Commit count: 26

cargo fmt