injectables 0.1.0

A procedural macro library that enables field injection between Rust structs through #[injectable] and #[inject_fields] attributes. The library handles visibility rules, generic type resolution, and detects circular dependencies during compile time to ensure safe composition. This enables a declarative approach to struct composition where fields from one or more source structs can be automatically injected into target structs while respecting Rust's ownership and visibility rules.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
use injectables::{injectable, inject_fields};

#[injectable]
pub struct Base {
    pub id: u64,
}

#[inject_fields(Base)]
pub enum InvalidTarget {  // Should fail because enums can't receive injected fields
    Variant1,
    Variant2,
}

fn main() {}